我有一个从客户端发送一个大的XML到WCF net.tcp服务的问题,并且某些机器上的客户端在调用方法时会引发内存不足异常,而我无法在我的本地机器上重现: 异常消息:无法分配33554432字节的托管内存缓冲区。可用内存量可能很低。WCF NetTcp服务和流式传输模式
因此,通过阅读方式来解决这个问题,它接缝流是一种方式。 所以我改变了客户端都与服务相应的绑定:
<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
我没有做到这一点,我已经离开了方法签名,因为他们原来是这样,但我的客户仍然可以按照以前的方式调用服务方法,并且所有这些都按预期工作。
这是否意味着流式转换代码没有按预期方式使用,还是我不需要更改方法签名以支持流式传输? 任何想法我怎么能真正检查?
@DanielKelley它不能回答这个问题吗? '这是否意味着流式转换代码没有按预期使用,或者我不需要更改方法签名以支持流式传输?“,以及一些关于未分配缓冲区的说法。 – aevitas
@DanielKelley谢谢,我会编辑答案,简单地陈述“是的,你应该。”因为这似乎是你的追求。如果你觉得它没有回答这个问题,请随时downvote。 – aevitas
@DanielKelley谢谢,我详细阐述了我的答案。 – aevitas