使用WCF net.tcp绑定流式传输

时间:2014-02-17 13:43:57

标签: wcf tcp streaming net.tcp

对于我正在处理的项目的需求,我必须使用net.tcp协议创建一个WCF服务,并且必须返回可能的大量数据。

我目前正在测试流媒体解决方案,因为它似乎符合我的要求,但我遇到了一些配置问题。

以下是我的配置部分:

服务方:

  <system.serviceModel>
    <bindings>
      <netTcpBinding>     
        <binding name="MyBinding" transferMode="Streamed"/>
      </netTcpBinding>
    </bindings>
    <services>
      <service name="MyNamespace.Services.MyService">
        <endpoint binding="netTcpBinding" contract="MyNamespace.Services.IMyService"
                  bindingConfiguration="MyBinding"/>
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
    </Services>
  </system.serviceModel>

网站方:

<system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="MyBinding" transferMode="Streamed"/>
      </netTcpBinding>
    </bindings>
    <client>    

      <endpoint address="net.tcp://localhost/Service/MyService.svc"
        binding="netTcpBinding" bindingConfiguration="MyBinding"
        contract="MyServiceReference.IMyService" name="MyBinding"/>
    </client>
  </system.serviceModel>

我有一个服务方法,它返回一个流(最后是一个MemoryStream),我想在网站上使用它。

但每当我创建我的客户端并调用此方法时,都会发生异常:

  

套接字连接已中止。这可能是由于处理消息时出错或远程主机超出接收超时或基础网络资源问题引起的。

我的服务器中没有例外,它会按原样返回流。

我已经在类似的帖子中读过有关配额的内容,但它不应该只适用于缓冲模式吗?

你对如何解决这个问题有任何线索吗?

此外,作为第二点,我想知道配置为流式服务的服务是否仍然可以像往常一样返回对象;最后有一些方法返回流和其他返回的对象。

提前致谢!

0 个答案:

没有答案