Метод WCF, показывающий неверные параметры - PullRequest
0 голосов
/ 30 августа 2010

У меня есть служба WCF, в ней у меня есть метод, который принимает MessageContracts в качестве входного параметра и возвращает MessageContract в качестве выходного параметра.Пожалуйста, найдите определение метода ниже

[OperationContract(IsOneWay = false)]
FileDownloadReturnMessage DownloadFile(FileDownloadMessage request);

Но когда я создаю прокси на клиенте и пытаюсь получить доступ к этому методу, я получаю другое определение метода.Ниже я вижу, когда я пытаюсь получить доступ к методу

DownloadFile(FileMetaData metadata, out stream outStream)

Полный код веб-службы приведен ниже:

[ServiceContract(Namespace = "http://schemas.acme.it/2009/04/01")]
public interface IFileTransferService
{
    [OperationContract(IsOneWay = false)]
    FileDownloadReturnMessage DownloadFile(FileDownloadMessage request);

   [OperationContract()]
   string HellowWorld(string name);

}

[MessageContract]
public class FileDownloadMessage
{
    [MessageHeader(MustUnderstand = true)]
    public FileMetaData FileMetaData;
}

[MessageContract]
public class FileDownloadReturnMessage
{
    public FileDownloadReturnMessage(FileMetaData metaData, Stream stream)
    {
        this.DownloadedFileMetadata = metaData;
        this.FileByteStream = stream;
    }

    [MessageHeader(MustUnderstand = true)]
    public FileMetaData DownloadedFileMetadata;
    [MessageBodyMember(Order = 1)]
    public Stream FileByteStream;
}


[DataContract(Namespace = "http://schemas.acme.it/2009/04/01")]
public class FileMetaData
{
    public FileMetaData(string [] productIDs, string authenticationKey)
    {
        this.ids = productIDs;
     this.authenticationKey= authenticationKey;
    }

    [DataMember(Name = "ProductIDsArray", Order = 1, IsRequired = true)]
    public string[] ids;
    [DataMember(Name = "AuthenticationKey", Order = 2, IsRequired = true)]
    public string authenticationKey;
}

Пожалуйста, сообщите.

1 Ответ

1 голос
/ 30 августа 2010

По умолчанию прокси-сервер не использует контракты сообщений, поэтому при создании прокси-сервера для сервиса с использованием контрактов сообщений он разворачивает их и содержит контракты данных, используемые в качестве параметров операции и выходных значений. Если вы хотите использовать контракты сообщений на прокси, толстые Всегда генерировать контракты сообщений при добавлении ссылки на службу в Visual Studio. Для svcutil используйте / mc switch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...