![](/img/trans.png)
[英]Multi Room Chat Application using SilverLight 4.0 and PollingDuplex
[英]MaxSessionsPerAddress issue when using WCF PollingDuplex and Silverlight client
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客户端代理会关闭通道(Close(),然后关闭Aboort() try / catch),然后每5秒尝试重新连接一次,N次重试。 也许即使10次重试,客户端也无法连接,是什么导致在服务上创建10个会话,所以所有后续重试均被拒绝?
一般信息:
WCF客户端:
WCF服务器:
任何帮助,不胜感激!
主要原因是客户端最终失败,这迫使客户端重新连接的频率太高(每5秒),在重新连接服务器/服务后收到客户端的请求,但客户端又出现问题,每次重新连接都会创建一个新的WCF服务会话,仅在缺少客户端轮询2分钟后终止,因此一个客户端在2分钟内在服务端创建了太多会话。
为什么Silverlight客户端最终出现故障并断开连接? 请参阅以下描述了实际问题和解决方案的帖子: WCF Silverlight客户端获取404找不到轮询消息的响应
应用了其他问题和解决方案,也许有人发现有帮助:
问题:由于不同的原因,通道关闭操作可能在CloseTimeout="00:03:00"
分钟内停留太长时间
解:
closeTimeout
设置为10秒,以便在出现任何问题的情况下在10秒内强制执行关闭操作,以便客户端快速进行清理 问题:有时我看到在sendTimeout=30minutes
的客户端回调调用( CallbackContract
)时服务被卡住,因为客户端断开/故障导致无法完成操作,因此服务清理延迟了30
分钟,但应尽快释放/清理,在客户端发生故障/断开连接时处理
解:
30
秒,这足以通过网络发送几千字节的消息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.