BasicHttpBinding推荐设置

时间:2013-05-24 08:32:01

标签: c# wsdl

我的一个进程中有内存泄漏(或v.high内存使用),我相信这可能是由于它在构造SOAP客户端时使用的BasicHttpBinding中的设置不正确/不良。

特别是我很好奇如何知道绑定上MaxBufferSizeMaxBufferPoolSizeMaxReceivedMessageSize的内容。有没有理由建议他们应该从默认设置中更改?

当前代码执行此操作,

var binding = new BasicHttpBinding();
binding.MaxBufferSize = 5000000; // (5,000,000)
binding.MaxBufferPoolSize = 5000000;
binding.MaxReceivedMessageSize = 5000000;

binding.ReaderQuotas.MaxStringContentLength = 500000; // (500,000)

我想我的问题是:

  • 这些值是否有可能导致高内存使用或泄漏?
  • 将这些更改为默认值是否安全?
  • 设置.MaxReceivedMessageSize = long.MaxValue.MaxStringContentLength = int.MaxValue会不会有任何不利之处?

我可以确认我知道MaxStringContentLength需要从默认值增加,因为收到了一些特别长的字符串,但是我不知道为什么缓冲区被设置为这些大小。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

请定义“内存使用率非常高”。

  

这些值是否有可能导致高内存使用或泄漏?

我不这么认为,怀疑服务实现比WCF绑定更合乎逻辑,这实际上只是接收消息并将其传递给您的代码的一些管道。

  

将这些更改回默认设置是否安全?

你可以试试。

  

设置.MaxReceivedMessageSize = long.MaxValue和.MaxStringContentLength = int.MaxValue会不会有任何缺点?

manual说:

  

服务[...]在线路上可以接收的消息大小受为每条消息分配的内存量的限制。

所以我想将它设置为几个演出并不会改善你服务的内存使用情况。