1

我有一个使用 tcp 的服务,我所有的方法都是异步的,所以我实现了 Begin/End 方法(我使用 C# 4.0)。

如果我只修改了我的 app.confing 以将传输模式设置为 Streamed 而不是 Buffered,那么当我在客户端进行异步调用时,应用程序将永远等待响应。但是,如果我将传输模式更改为缓冲,那么它工作正常。

另外我注意到我需要在缓冲传输模式下使用可靠会话,因为当我启动应用程序时,我收到错误 10061,即目标服务主动拒绝连接。

我知道如果我想使用流传输模式,我不需要禁用 dereliableSession,所以我问是否可以将流传输模式与异步方法一起使用。

谢谢。

编辑:我正在尝试传输一个 5MB 的文件。但是,这是一个测试,因为在生产中,文件可以更大,所以我想为将来的需要做好准备。

4

1 回答 1

5

答案是肯定的,您可以在异步方法上使用流传输模式。下面的链接将带您进入 MSDN 文章,该文章描述了使用异步方法实现流式传输功能所必须采取的必要步骤。

以下帖子应澄清您的情况:http ://social.msdn.microsoft.com/Forums/en-US/wcf/thread/4893f3c9-2a38-462f-b49c-afa833a3760a/

此外,另一篇文章详细解释了如何使用代码示例创建自托管 REST WCF 服务,该服务提供使用流模式和异步方法上传/下载大文件的功能。您可以使用基于 SOAP 的服务来实现相同的目的。与配置相关的事情是将您的传输模式设置为流式传输并增加超时值。有关完整的实施示例,请查看此链接: http: //www.level533.com/2010/11/uploading-large-files-to-self-hosted-wcf-rest-service/

PS:我无法提供此答案中的所有内容,否则这将成为一篇成熟的文章。

于 2012-06-26T18:25:03.150 回答