[英]An WCF method call on a cached web service client is considered a new IIS7 connection?
方案是:Windows 7计算机上具有IIS7的WCF Web服务。 对于带有Windows 7的IIS7,只能建立10个连接(从Internet上可以找到)。
此WCF Web服务具有与另一个WCF Web服务的缓存的服务客户端连接。 那一个缓存的服务客户端是10个连接之一(受IIS7限制)吗? 还是通过缓存连接将是10个连接之一的每个方法调用?
注意:以为我已经接受了我的答案,我对更好的答案很感兴趣,如果它们真的能解决问题的一般背景(因为它更多是一种理论上的问题),我将把它们标记为答案(而不是我的答案)。
经过一些文档和测试,由于没有提供好的答案,我设法找到了这一点:
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/zh-CN/wcf/thread/fe1772c8-9ae3-4f6b-b05f-d9eeb683b623/
注意:以为我已经接受了我的答案,我对更多信息以及对该问题的更好答案感兴趣。
如果您的应用程序是基于.Net Framework 3.5(而不是.Net Framework 4.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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.