我知道leasTimeout设置是connectionPoolSettings元素的一部分。我知道connectionPoolSettings是tcpTransport的孩子。看起来这只能配置为customBinding,而不能配置为netTcpBinding
当我从netTcpBinding切换到customBinding时,我得到了关于“在IP端点0.0.0.0:8091.确保您没有试图在您的应用程序中多次使用此端点,并且没有其他应用程序在此端点上侦听”的错误消息。
未对端口规范进行任何更改。
下面是我的netTcpBinding配置:
<netTcpBinding>
<binding name="TcpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Streamed" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxConnections="10" maxReceivedMessageSize="100000000">
<readerQuotas maxNameTableCharCount="1000000" maxStringContentLength="8192000" maxArrayLength="1638400" />
<security mode="None">
</security>
</binding>
</netTcpBinding>
这是我的customBinding:
<customBinding>
<binding name="TcpBindingCustom">
<windowsStreamSecurity ProtectionLevel="None" />
<tcpTransport>
<connectionPoolSettings GroupName="default" leaseTimeout="00:05:00"
idleTimeout="00:02:00" MaxOutboundConnectionsPerEndpoint="20" />
</tcpTransport>
</binding>
</customBinding>
仅在使用customBinding时使用netTcpBinding时,我没有收到此错误消息。
我还确定,如果我注释掉mex端点,则不会收到此错误消息,但这并不能解决问题,但它可能会帮助我们找到解决方案。
发布于 2011-07-17 07:24:32
不是对这个问题的回答,而是一条评论,当你的应用程序拥有大量的内存时,这条评论可能会在未来拯救你。您已经将maxBufferPoolSize设置为524288,将maxReceivedMessageSize设置为100000000 (752MB),这可能意味着(取决于您设置应用程序池的方式)您可以拥有524288个缓存缓冲区,每个缓存缓冲区的大小为100000000 (752MB)!最近,我们的服务(在iis7上运行)占用1 1GB内存时遇到了问题。这是由于设置了maxBufferPoolSize,它指定了可以缓存的最大缓冲区数量。有了一个高达524288的数字,你就是在自找麻烦。我们已经设置了一个较低的数字,但您需要考虑平衡,因为这将影响速度。在任何情况下,我都不会用这么大的maxReceivedMessageSize将它设置为超过几个!(它需要这么大吗?)-不管怎样,这只是一个小技巧,可以帮你省去几天的内存分析和挠头!
https://stackoverflow.com/questions/6713180
复制相似问题