Параметр метода отсутствует в прокси-классе WCF - PullRequest
2 голосов
/ 01 марта 2011

У меня есть метод 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 генерируется в прокси-классе правильно, хотя.

Есть идеи, почему отсутствует входной параметр?

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

Попробуйте обернуть объект serviceclient в интерфейсе IService, например, напишите:

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

вместо

ServiceReference1.Service1Client serviceclient = new ServiceReference1.Service1Client();
3 голосов
/ 01 марта 2011

Попробуйте вместо этого использовать DataContract.Это может решить вашу проблему

[DataContract]
      public class SourceDataQuery
        {

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

            ....
        }
...