繁体   English   中英

缓存的Web服务客户端上的WCF方法调用是否被视为新的IIS7连接?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM