2012-06-26 17 views
1

我有一个使用tcp的服务,并且我所有的方法都是异步的,所以我实现了Begin/End方法(我使用C#4.0)。wcf tcp async流是可能的?

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

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

我知道,如果我想使用流传输模式,我不需要禁用de可靠会话,所以我问是否有可能使用异步方法的流传输模式。

谢谢。

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

+0

什么是您传输的数据的大小和类型? –

+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:我无法提供此答案中的所有内容,否则这将成为完全成熟的文章。

+0

如果链接中断(他们经常这样做),那么只包含链接的答案变得毫无意义。你能总结链接所说的内容并更新你的回应吗? – Leigh