我有一个使用tcp的服务,我的所有方法都是异步的,所以我实现了Begin / End方法(我使用的是C#4.0)。
如果我只修改了我的app.confing将传输模式设置为Streamed而不是Buffered,当我在客户端进行异步调用时,应用程序将永远等待响应。但是,如果我将传输模式更改为Buffered,那么它可以正常工作。
另外我注意到我需要在缓冲传输模式下使用reliableSession,因为当我启动应用程序时,我收到错误10061,目标服务主动拒绝连接。
我知道如果我想使用流传输模式,我不需要禁用de reliableSession,所以我想问是否可以使用异步方法的流传输模式。
感谢。
编辑:我正在尝试传输5MB文件。但是,这是一个测试,因为在生产中,文件可能更大,所以我希望为未来的需求做好准备。答案 0 :(得分: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/
P.S:我不能提供这个答案中的所有内容,否则这将成为一个完全成熟的文章。