我有一个托管在 Windows 服务上的 WCF 服务。现在我想向此服务添加文件传输功能,但我有以下问题;考虑到传输文件是两种方式,而且文件不大(10MB左右):
1:我已阅读MSDN “跨流式传输发生的操作最多可以与一个输入或输出参数签订契约(Contract)”。这是否意味着我不能进行具有多个参数的操作或者什么?
2:如果我使用Streamed作为传输模式,我是否需要关心“in”或“out”参数为集合的操作中传输的数据大小?
3:为了将模式设置为 Streamed,我是否需要更改除 TransferMode 之外的其他任何内容?
最佳答案
看看this post有关 WCF 文件传输的一些指导。您应该使用 MTOM 编码器。这篇文章给出了一些很好的理由,并提供了一些示例。
- 是的。
- 只要全部使用 MTOM 进行流式编码,大小就不重要。只需确保在绑定(bind)配置上设置 maxReceivedMessageSize 即可。
- 然后为消息创建消息契约。见下文:
消息合约示例:
[MessageContract()]
public class FileTransferRequest
{
[MessageHeader(MustUnderstand = true)]
public string FileName;
[MessageBodyMember(Order = 1)]
public System.IO.Stream Data;
}
关于wcf - 关于使用WCF传输文件的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/609936/