0

我有一个使用 WebHttpBinding 的 WCF 服务。

我使用以下配置:

InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple

我已将 MaxConcurrentCalls 限制为 20。

我看到的是以下内容:如果达到 20 的限制,则新的连接/请求将排队。我怎样才能实现发送“服务繁忙”消息之类的东西?

非常感谢

4

2 回答 2

1

我认为在这种情况下,最好让客户推断出服务正忙于请求超时,而不是服务因错误代码而失败。

于 2014-02-07T08:11:55.690 回答
0

“服务繁忙”是 WCF 未能处理消息的结果。我不确定为什么您更喜欢失败的请求,而不是可能需要更长时间才能成功处理的请求。此外,WCF 公开了服务限制参数,但我不相信您可以直接配置内置的 WCF 排队机制。

即使对于您展示的单例配置(maxConcurrentCalls="1" 或 InstanceContextMode.Single),限制也受其他两个参数(maxConcurrentSessions 和 maxConcurrentInstances)的影响,而不仅仅是并发调用。本文对所涉及的三个参数的效果进行了很好的概述。通过调整这些和可能的超时设置,如果这确实是您需要的,您可能会强制“服务繁忙”条件。

于 2011-05-06T17:40:06.303 回答