场景是:在安装了IIS7的Windows7计算机上有一个WCF Web服务。对于Windows7的IIS7,只能建立10个连接(正如我从互联网上了解到的那样)。
此WCF Web服务具有到另一个WCF Web服务的缓存服务客户端连接。这是10个连接(受IIS7限制)中的一个缓存服务客户端吗?或者通过该缓存连接的每个方法调用都将是10个连接中的一个?
注意:虽然我已经接受了我的答案,但我对更好的答案感兴趣,如果它们真的解决了问题的一般背景(因为它更多的是一个理论上的问题),我将把它们标记为一个答案(而不是我的)。
发布于 2012-09-03 15:07:46
在一些文档和测试之后,由于没有提供好的答案,我设法找出了以下内容:
10个连接限制是针对HTTP请求的。来自另一个WCF服务的每个方法调用都需要2个HTTP请求(这是WCF服务通信的方式)。如果绑定和身份验证的设置不同,则可能会有不同的想法。我没有找到缓存web服务客户端可能会有所帮助的任何信息。
其他HTTP请求(超过10个)不会被拒绝,它们实际上被缓存在IIS中。
因此,简短的答案是,方法调用是10个HTTP请求中的2个。
部分链接:http://www.jpelectron.com/sample/WWW%20and%20HTML/IIS-%20OS%20Version%20Limits.htm https://www.owasp.org/index.php/Authentication_In_IIS http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/fe1772c8-9ae3-4f6b-b05f-d9eeb683b623/
注意:虽然我已经接受了我的答案,但我对更多的信息和对这个问题的更好的答案感兴趣。
发布于 2012-03-17 00:24:09
如果您的应用程序是在.Net Framework3.5(不是.Net Framework4.0)上构建的,那么我猜您遇到的限制是<serviceThrottling>限制,它具有以下默认值,
maxConcurrentSessions - 10
MaxConcurrentCalls - 16
maxConcurrentInstances - 16因此,如果您的绑定配置启用了安全或可靠会话,并且有10个并发用户(用户=处于打开状态的服务代理实例),则将达到maxConcurrentSessions限制,并且创建新会话(新的服务代理打开)的请求将排队,直到旧的代理连接关闭。您可以尝试在前端WCF服务和后端WCF服务中添加以下配置,并检查是否有帮助。
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="False" />
<serviceMetadata httpGetEnabled="True"/>
<!-- Specify throttling behavior -->
<serviceThrottling maxConcurrentCalls="30"
maxConcurrentSessions="30" />
maxConcurrentInstances="30" />
</behavior>
</serviceBehaviors>
</behaviors>https://stackoverflow.com/questions/9720354
复制相似问题