2

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

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

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

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

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

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

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

有任何想法吗?

谢谢大家!

4

1 回答 1

1

检查如下设置:

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

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

于 2012-09-12T15:12:53.930 回答