如何使用WCF的MessageContract返回值?

时间:2011-07-23 14:01:57

标签: c# wcf

我想知道,如果有可能返回任何内容,当我使用流媒体通过WCF发送数据时?我使用netTcpBinding,客户端和服务器都在同一个本地网络中。

这是我的代码:

[ServiceContract()]
public interface IFileTransferService
{
    [OperationContract(IsOneWay = true)]
    //[FaultContract(typeof(MyFaultException))] // I can't do that
    void Upload(FileTransferRequest request);
}

[MessageContract()]
public class FileTransferRequest
{
    [MessageHeader(MustUnderstand = true)]
    public string FileName;

    [MessageBodyMember(Order = 1)]
    public System.IO.Stream Data;

}

[DataContract]
public class MyFaultException
{
    private string _reason;
    [DataMember]
    public string Reason
    {
        get { return _reason; }
        set { _reason = value; }
    }
}

所以,当使用Message Contract时,事务必须是单向的,我不能返回任何值,我不能抛出异常。我如何通知客户,该操作是否成功?并向他发送错误消息,例如?

1 个答案:

答案 0 :(得分:4)

  

因此,在使用消息合约时,交易必须是单向的,我   不能返回任何值,我不能抛出异常。

您在哪里找到此类信息?您当然可以返回一个值 - 您可以返回void或其他消息合同。你的意思是“交易”吗?