sll*_*sll 8 c# silverlight wcf .net-4.0 polling
WCF跟踪日志显示许多"The server has hit a PollingDuplex throttle, MaxSessionsPerAddress, and cannot accept another session from this client. An http error was returned"
错误.
找不到有关MaxSessionsPerAddress
设置的足够详细信息,只是发现这篇帖子MaxSessionsPerAddress
总是说是10
不能改变的.
只是在想可能是这个问题涉及到我的客户端代理,在这样的问题,一些超时结果实现它们共同容错逻辑:在通道故障WCF客户端代理的情况下关闭一个通道(关闭(),然后Aboort()在尝试/捕获),然后尝试重新连接每5秒,N次重试.也许客户端甚至在10次重试之后仍然无法连接在服务上创建了10个会话,因此所有下一次重试都被拒绝了?
一般信息:
WCF客户端:
WCF服务器:
任何帮助非常感谢!
主要原因是客户端最终失败,这迫使客户端过于频繁地重新连接(每 5 秒一次),重新连接后,服务器/服务收到客户端的请求,但客户端再次失败,每次重新连接都会创建一个新的 WCF 服务会话,只会在客户端轮询缺失的 2 分钟内终止,因此在 2 分钟内,一个客户端在服务端创建了太多会话。
为什么 silverlight 客户端最终会出现故障并断开连接?请参阅以下帖子,其中描述了实际问题和解决方案:WCF Silverlight client getting 404 not found response for poll message
其他已应用的问题和解决方案,也许有人发现有帮助:
问题:由于不同的原因,通道关闭操作可能会卡住CloseTimeout="00:03:00"
几分钟,这太长了
解决方案:
closeTimeout
为 10 秒,这样如果出现任何问题,将在 10 秒内强制关闭操作,以便客户端快速进行清理问题:CallbackContract
有时我看到服务在客户端回调调用 ( )时卡住,sendTimeout=30minutes
因为由于客户端断开/故障而无法完成操作,因此服务清理延迟了几分钟30
,但应尽快释放/清理并处置,以防发生故障/断开客户端连接
解决方案:
30
秒,这足以通过网络发送几千字节的消息