2

以下のように定義された WCF メソッドがあります。

[OperationContract]
Message GetSourceData(SourceDataQuery sourceDataQuery);

実際の実装は次のようなものです。

public Message GetSourceData(SourceDataQuery sourceDataQuery)
    {

        IEnumerable<ExportRow> sourceData = repo.GetData();

        var customBodyWriter = new CustomBodyWriter(sourceData);
        var message = Message.CreateMessage(MessageVersion.Soap11, "GetSourceData", customBodyWriter);

        return message;
    }

SourceDataQuery オブジェクト:

[MessageContract]
public class SourceDataQuery
{
    [MessageBodyMember]
    public int DataSourceId { get; set; }

    [MessageBodyMember]
    public int[] FiledIds { get; set; }

    [MessageBodyMember]
    public string Filter { get; set; }

    [MessageBodyMember]
    public string Sort { get; set; }
}

私の問題は、この WCF サービスを別のプロジェクトに追加し、サービス参照を追加してプロキシを作成すると、プロキシ クラスに GetSourceData メソッドがありますが、その入力パラメーターがありません。パラメーターは必要ありません。ただし、プロキシ クラス内で SourceDataQuery オブジェクトが正しく生成されていることがわかります。

入力パラメーターが欠落している理由は何ですか?

4

2 に答える 2

3

IService インターフェイスで serviceclient オブジェクトをラップしてみてください。たとえば、次のように記述します。

ServiceReference1.IService1 serviceclient = new ServiceReference1.Service1Client();

それ以外の

ServiceReference1.Service1Client serviceclient = new ServiceReference1.Service1Client();
于 2011-09-08T12:57:14.933 に答える
3

代わりに DataContract を使用してみてください。それはあなたの問題を解決するかもしれません

[DataContract]
      public class SourceDataQuery
        {

            [DataMember]
            public int DataSourceId { get; set; }

            ....
        }
于 2011-03-01T20:51:47.650 に答える