【发布时间】:2014-07-08 13:12:24
【问题描述】:
我在将大型 xml 从客户端发送到 WCF net.tcp 服务时遇到问题,当调用该方法时,某些机器上的客户端会抛出内存不足异常,而我无法在本地机器上重现该异常: 异常消息:未能分配 33554432 字节的托管内存缓冲区。可用内存量可能很低。
因此,在阅读了解决此问题的方法后,它接缝流式传输是要走的路。 所以我相应地更改了客户端和服务的绑定:
<netTcpBinding>
<binding name="NetTcpBinding_IPricerDataService" closeTimeout="00:10:00" transferMode="Streamed"
openTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" />
</netTcpBinding>
但是,我的印象是这也意味着更改服务方法签名以采用流参数: http://msdn.microsoft.com/en-us/library/ms789010(v=vs.110).aspx
我没有这样做,我保留了原来的方法签名,但我的客户端仍然可以像以前一样调用服务方法,并且一切都按预期工作。
这是否意味着未按预期使用流式转换代码,或者我不需要更改方法签名以支持流式传输? 有什么想法可以真正检查吗?
【问题讨论】:
标签: c# .net wcf stream net.tcp