【问题标题】:Reset IIS on ASP.NET site when an error occurres发生错误时在 ASP.NET 站点上重置 IIS
【发布时间】:2011-04-11 07:04:51
【问题描述】:

我有一个 ASP.NET 网站,在极少数情况下会出现导致大量请求失败的错误。错误被捕获并记录在所有页面的基类的 OnError 覆盖中,因此我知道错误发生的时间。

由于这个错误非常罕见,我想在它发生时重置 iis,以便网站恢复正常运行。

我的问题:在下面的 OnError 代码中,如何使 IIS 重置? 我可以运行 iisreset 或者可以使用类似的东西导致 iis 崩溃 System.Environment.Exit(-1)。有什么首选的方法来重置 iis?

    Protected Overrides Sub OnError(ByVal e As EventArgs)
        LogException(Server.GetLastError())
        MyBase.OnError(e)
    End Sub

【问题讨论】:

  • 好像你想剪掉你坐的那根树枝?? :) 顺便说一句,如果您重新启动 IIS,它将显示应用程序在 IIS 重新启动期间不可用,如果由于某种原因 IIS 无法再次启动,那么......??希望你应该寻找其他东西。
  • 它可能不适用于您,但是当您重新启动 IIS(或回收应用程序池)时,该服务器(或应用程序池)上的 所有 站点都会重置,这也意味着所有(内存中的)会话都丢失了。

标签: asp.net iis error-handling


【解决方案1】:

首先,正如其他人指出的那样,您需要重新启动 ASP.NET 应用程序而不是 IIS(Web 服务器)。实现这一目标的两种方法可能是

  1. 触摸(修改)web.config(类似的替代方法是触摸/修改 bin 文件夹)
  2. 要求 AppDomain 卸载(使用HttpRuntime.UnloadAppDomain

查看讨论此方法的 this article

我还建议您考虑定期应用程序池回收(可能来自 IIS 配置)作为替代方案。一个

【讨论】:

  • 我已经有池回收。如果错误发生在工作时间,我会看到我收到的错误电子邮件,通常会快速修复它,但如果问题发生在凌晨 2 点并且池在稍后的任何时间回收,我只会在早上和中间的所有时间看到错误该网站将无法正常工作。因为这个特定的错误非常罕见,所以我不担心网站在几秒钟内不可用(比网站不工作几个小时要好得多)
猜你喜欢
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
相关资源
最近更新 更多