私はProtobuf-netのRPC機能を使用してWCF Webサービスを使用しようとしています。ここに私のサービス契約です:Protobuf-net NET CFクライアントでWCFサービスを使用するには?
namespace WcfEchoService
{
// NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in Web.config.
[ServiceContract]
public interface IEchoService
{
[OperationContract, ProtoBehavior]
string Echo(string value);
[OperationContract, ProtoBehavior]
string EchoNull();
[OperationContract, ProtoBehavior]
CompositeType[] EchoData(CompositeType[] value);
}
// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract]
[ProtoContract]
public class CompositeType
{
[ProtoMember(1)]
public bool BoolValue
{
get;
set;
}
[ProtoMember(2)]
public string StringValue
{
get;
set;
}
}
}
そして、ちょうど下にされて私の.NET CFクライアント:
クラスEchoServiceClient:ProtoClient、IEchoService {
#region IEchoService Members
public EchoServiceClient() : base(new HttpBasicTransport("my service URI"))
{
}
public string Echo(string value)
{
return (string)this.Invoke("Echo", value);
}
public string EchoNull()
{
return (string)this.Invoke("EchoNull");
}
public CompositeType[] EchoData(CompositeType[] value)
{
return (CompositeType[])this.Invoke("EchoData", value);
}
#endregion
}
そして、これは私が消費しようとする方法です。 Webサービス:
class Program
{
static void Main(string[] args)
{
EchoServiceClient client = new EchoServiceClient();
Console.WriteLine(client.EchoNull());
}
}
私はtメッセージに続くメッセージ:
AllowWriteStreamBufferingが無効のときに書き込み操作を実行するには、ContentLengthを負でない数値に設定するか、SendChunkedをtrueに設定する必要があります。
は限り私がいるProtobufネットのソースコードに掘った後、言うことができるように問題が指定されていないコンテンツ-な長さがないことのようです。 .NET CFでprotobuf-netシリアル化を使用してWCF Webサービスを使用する方法や、この問題を解決する方法はありますか?
マーク:
ご返信ありがとうございます。私は試してみて、そのRPCスタックから何ができるのか見てみましょう。 –
これにはWP7が含まれていますか? –
@リチャード - v2のコア*を入手する以外にWP7を見る時間はあまりありませんでした(v2はソースとして利用できますが、リリースされていません)。それ以外にも、 'byte [] 'トリックは確実に機能し、シンプルさの利点があります。今週の早い段階で、Silverlightに以前は見つからなかった拡張ポイントがいくつか追加されていますが、WP7が含まれているかどうかは分かりません。悲しいかな、私のうちの1つだけ... –