【问题标题】:WCF Duplex Service problems with IIS AppPool recyclingIIS AppPool 回收的 WCF 双工服务问题
【发布时间】:2011-04-15 22:18:58
【问题描述】:

我在 IIS 中设置了 WCF Silverlight(3) Http Duplex 服务。在我在 IIS 中回收 ApplicationPool 之前,它运行良好。

连接的 SL 客户端随后调用此双工服务上的方法,然后开始从 Web 服务获取 TimeoutExceptions/CommunicationExceptions。增加客户端的超时没有帮助。

回收似乎不会终止服务器和客户端之间的底层(双工)http 连接。 当客户端随后调用此服务上的方法时,IIS 无法正确处理它。

如果我在客户端上重新创建代理,一切都会再次正常。问题是,我怎么知道我需要重新建立与服务器的连接? 不是 Web 上的所有示例仅显示了如何处理断开连接的客户端,而不是在 Web 服务被回收的情况下您会做什么。完全重新启动 IIS 是可以的,因为在这种情况下 http 连接会关闭。

非常感谢任何输入。

【问题讨论】:

  • 我建议对任何严肃的 WCF 工作使用自托管,对于双工方案更是如此。自托管 WCF 服务真的没那么难,然后你就不用依赖 AppPools 回收之类的东西了....

标签: silverlight wcf iis


【解决方案1】:

这是预期的行为。这就是双工 http 的工作原理。双工 http 通信使用可靠会话。这意味着一切正常,直到其中一侧关闭。如果 AppPool 被回收,正在运行的服务实例将被终止。下次客户端尝试与服务通信时,它无法访问它(实例已经不存在),但是由于可靠的会话,它尝试了几次然后抛出超时。超时后的唯一解决方案是中止当前代理,创建新的客户端代理并开始新的双工通信。

【讨论】:

  • 是的,我得出了同样的结论。我们现在只是在客户端捕获异常并重新建立连接。
猜你喜欢
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2012-08-18
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多