使用异步模式时,WCF连接超出最大连接数

Bet*_*033 6 c# wcf

我有一个简单的WCF服务,我正在与异步通信.

我不喜欢的是打电话的时候 EndServiceMethod(IASyncResult)

如果我忘记调用该Close()方法,该服务实际上会使连接保持打开状态,然后在wcf达到超时异常的最大并发连接数后,所有剩余的连接都将失败.

我已经尝试将该 [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)] 属性用于服务合同,这似乎对服务的连接状态没有任何影响.

也许我错误地实现了它?

任何想法或建议.

我正在尝试找到WCF的行为模式,允许客户端发出请求,然后服务器响应请求,然后假设连接已完成并可以终止.

Shi*_*iji 4

这其实是一个棘手的问题。

一方面,如果您不关闭连接,它将保持打开状态,直到超时(1 分钟),在负载下,您将达到最大连接数(默认 10)。

另一方面,您正在异步调用服务,因此如果您在收到回调之前关闭连接,则回调将丢失。

您可以尝试以下几件事:

  • 增加最大连接数
  • 在回调处理程序中关闭连接
  • 减少超时时间

  • @Beta033,公共服务将具有较高的最大连接数和较低的超时时间。 (2认同)