2010-08-30 3 views
0

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

[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

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

+0

Вы абсолютно правы. Большое спасибо мату – Amit

Смежные вопросы