【问题标题】:WCF Service cannot be opened - too many client calls无法打开 WCF 服务 - 客户端调用过多
【发布时间】:2012-09-05 15:39:13
【问题描述】:

我有一个托管在 Windows 服务中的 WCF Web 服务。

使用以下属性(VB)配置服务

<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Multiple,
InstanceContextMode:=InstanceContextMode.PerCall,
UseSynchronizationContext:=False)>

我创建了一个测试客户端,它一次创建 50 个线程,并且我立即启动它们,所有这些都查询 WCF 服务上的操作。前 30 个左右的开口 (client.open()) 工作,但之后我在客户端上收到一条错误消息,指出无法完成打开,因为尝试打开服务时超时,因此我得到一个 EndPointNotFoundException . (如果重要的话,我调用的操作都是同步的。)

我是否可以期待这种行为,因此只需要忍受这些例外情况,或者我是否必须查看我的一些设置,无论是上述设置还是任何其他设置? (我正在使用 NetTcpBinding。)

我看到的是客户端同时处理一次创建的线程的请求,因此上述设置具有使服务同时启用多用户的预期效果。

但理想情况下,我不会遇到超时异常。相反,我希望客户等待更长的时间才能得到他们的响应,而不是超时。

有什么想法吗?

谢谢大家!

【问题讨论】:

  • 如果您希望您的客户端等待更长时间,您可以更改客户端的打开超时值。

标签: wcf web-services timeout wcf-client endpoint


【解决方案1】:

检查这些设置:

<behavior name="CommonServices_Behavior">
  <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="50"
   maxConcurrentInstances="50" />
</behavior>

我似乎记得其中一些值在您的 machine.config 文件中设置了默认值。还有一个MaxConnections value to check for NetTcpBinding

【讨论】:

  • 谢谢,我会看看这些设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2011-08-10
  • 2012-11-27
相关资源
最近更新 更多