我在IIS中设置了WCF Silverlight(3)Http Duplex Service。它非常有效,直到我在IIS中回收ApplicationPool。
然后在此双工服务上调用方法的已连接SL客户端然后开始从Web服务获取TimeoutExceptions / CommunicationExceptions。增加客户端的超时时间无济于事。
回收似乎不会破坏服务器和客户端之间的基础(双工)http连接。 当客户端调用此服务上的方法时,IIS无法正确处理它。
如果我在客户端重新创建代理,一切正常。问题是,我怎么知道我需要重新建立与服务器的连接? 不 Web上的所有示例都显示了如何处理断开连接的客户端,而不是在Web服务被回收的情况下执行的操作。完全重启IIS是可以的,因为在这种情况下http连接已关闭。
非常感谢任何输入。
答案 0 :(得分:1)
这是预期的行为。这就是双工http的工作方式。双工http通信使用可靠的会话。这意味着一切都很好,直到其中一方关闭。如果AppPool被循环使用,则运行服务实例将被终止。下次客户端尝试与服务进行通信时,它无法访问它(实例已经不存在),但由于可靠的会话,它会多次尝试,然后抛出超时。超时后唯一的解决方案是中止当前代理,创建新的客户端代理并启动新的双工通信。