gpt4 book ai didi

c# - WCF - 返回带有流数据的对象

转载 作者:太空狗 更新时间:2023-10-30 00:54:54 25 4
gpt4 key购买 nike

是否可以将作为复杂对象的一部分的流作为从 Wcf 方法返回的数据返回?

我已经检查了大部分关于使用 Wcf 返回流数据的 msdn 引用资料;例如this one .所有的示例似乎都显示了当方法返回类型为 Stream(或参数为流)时如何返回流。

我想知道的是,如果数据是复杂对象属性的一部分,它能否返回流?例如,GetData() 是否可以返回包含流的数据,如下所示:

[DataContract]
public class Data
{
[DataMember]
public string Info { get; set; }

/// <summary>
/// This is the file stream that would be returned to client.
/// </summary>
[DataMember]
public Stream File { get; set; }
}

[ServiceContract()]
public interface IService
{
[OperationContract]
Data GetData();
}

从我最初的测试来看,这似乎行不通。我在客户端出现异常(意外的套接字关闭)。无论是 DataContractSerialization 还是 XmlSerialization,结果都是相同的。我已经使用 TransferMode.Streamed 设置了所需的流模式。

最佳答案

你可以使用消息合约,将你的合约设计为

[MessageContract]
public class Data
{
[MessageHeader(MustUnderstand = true)]
public string Info { get; set; }

/// <summary>
/// This is the file stream that would be returned to client.
/// </summary>
[MessageBodyMember(Order = 1)]
public Stream File { get; set; }
}

[ServiceContract()]
public interface IService
{
[OperationContract]
Data GetData();
}

关于c# - WCF - 返回带有流数据的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11199167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com