我正在尝试通过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/

10-16 02:31