WCF流式文件传输

时间:2009-12-17 21:41:38

标签: c# wcf file streaming net.tcp

我正在尝试通过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连接上设置属性或某些内容以允许在客户端进行流式传输?

2 个答案:

答案 0 :(得分:4)

  

是否有财产或其他东西   需要在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文档页面。

答案 1 :(得分:0)

您应该在服务器上配置跟踪并打开日志,以便更好地解释发生的事情 看看Service Trace Viewer Tool