我正在尝试通过WCF传输一些文件,但是一旦从客户端调用该方法,就会收到以下消息:
The socket connection was aborted. This could be caused by an error processing
your message or a receive timeout being exceeded by the remote host, or an
underlying network resource issue. Local socket timeout was '00:10:00'.
我的方法包装在
try...catch
中,因此,如果服务器上的方法内部发生任何引发异常的事件,则应将其记录到控制台窗口,但不记录任何内容。我也尝试过在本地运行服务器并在该方法上设置断点,而该方法似乎根本没有被调用。是否需要在net.tcp连接上设置属性或某些内容以允许在客户端进行流传输?
最佳答案
是否有财产或其他东西
需要在net.tcp连接上设置为
允许在客户端流?
当然是!您需要设置客户端配置以使用流式传输-在一个方向上使用(如果要向服务器上载内容,则为StreamedRequest;如果要从服务器上下载内容,则为StreamedResponse;如果双向传输,则只是普通流式) 。
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="streaming"
transferMode="StreamedResponse">
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint name="StreamEndpoint"
address="..."
binding="netTcpBinding"
bindingConfiguration="streaming"
contract="IYourService" />
</client>
</system.serviceModel>
您需要使用名称(无论您喜欢什么)定义绑定配置,然后通过在
<endpoint>
属性中指定该名称在bindingConfiguration=
中引用该配置。有关更多详细信息,请参见How to: Enable Streaming上的MSDN文档页面。
关于c# - WCF流文件传输,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1924786/