我有一个使用 WebHttpBinding 的 WCF 服务。
我使用以下配置:
InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple
我已将 MaxConcurrentCalls 限制为 20。
我看到的是以下内容:如果达到 20 的限制,则新的连接/请求将排队。我怎样才能实现发送“服务繁忙”消息之类的东西?
非常感谢
我有一个使用 WebHttpBinding 的 WCF 服务。
我使用以下配置:
InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple
我已将 MaxConcurrentCalls 限制为 20。
我看到的是以下内容:如果达到 20 的限制,则新的连接/请求将排队。我怎样才能实现发送“服务繁忙”消息之类的东西?
非常感谢
我认为在这种情况下,最好让客户推断出服务正忙于请求超时,而不是服务因错误代码而失败。
“服务繁忙”是 WCF 未能处理消息的结果。我不确定为什么您更喜欢失败的请求,而不是可能需要更长时间才能成功处理的请求。此外,WCF 公开了服务限制参数,但我不相信您可以直接配置内置的 WCF 排队机制。
即使对于您展示的单例配置(maxConcurrentCalls="1" 或 InstanceContextMode.Single),限制也受其他两个参数(maxConcurrentSessions 和 maxConcurrentInstances)的影响,而不仅仅是并发调用。本文对所涉及的三个参数的效果进行了很好的概述。通过调整这些和可能的超时设置,如果这确实是您需要的,您可能会强制“服务繁忙”条件。