【问题标题】:WCF service is not responding after app pool recycle应用程序池回收后 WCF 服务没有响应
【发布时间】:2018-08-28 05:53:58
【问题描述】:

我有一个应用程序不断检查一个 wcf 服务响应,并且该服务托管在 IIS 中。

当我运行此应用程序并且服务已经在后台运行时,当时应用程序正在从服务获取响应 n 次。 但是当我回收应用程序池时,应用程序没有得到服务的任何响应。此时我必须重新启动应用程序,然后它才能工作。

即使在回收应用程序池之后,请向我建议一种方法或我应该在服务中进行的任何更改以从它那里获得响应。我不想重新启动应用程序。 或者,如果我可以在应用程序中执行任何解决方法,以便它知道创建了新会话或回收了应用程序池。

【问题讨论】:

  • 也许您可以在您的 web 应用程序中的每个调用上重新创建代理,这可能会使它有点慢,但只要您不进行任何重大更改,它就可以保证始终获得对 wcf 应用程序服务的响应到您的 wcf 服务

标签: c# .net wcf service


【解决方案1】:

我怀疑您将客户端代理存储在某处,而不是定期重新创建它。一旦 WCF 代理出现故障,就不能再使用它。重新创建它。如果您的 WCF 服务是基于会话的而不是每次调用的,那么您将遇到此类问题。

【讨论】:

  • 是的,你是对的,我的 WCF 服务是基于会话的,当应用程序池回收发生时它会重新创建。但我不想更改这些设置。有什么办法可以通知这个服务的用户应用,AppPool 被回收了?
  • @AnkitSaini 除非您使用双向通信与调用客户端的服务,否则可能不会。如果服务器 AppPool 回收或重新启动,它将使所有客户端代理无效。听起来你在做投票。虽然不是一件非常糟糕的事情,但为什么不每隔 15 秒到一分钟(取决于要求)轮询一次服务器以获得心跳呢?如果它出现故障,您知道服务器已回收,此时您重新创建客户端代理并再次 ping 它
  • @AnkitSaini 您可以在客户端公开一个 WCF 服务,服务器可以调用(回调)说“嗨!我又开始运行了”。这可能会更好
猜你喜欢
  • 2012-09-02
  • 2013-06-11
  • 2013-10-19
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 2015-01-07
相关资源
最近更新 更多