【问题标题】:How to discover the reason of ASP.NET application restart如何发现 ASP.NET 应用程序重启的原因
【发布时间】:2020-03-13 09:51:44
【问题描述】:

有没有办法监视(记录)重新启动 ASP.NET 应用程序的原因?

我们现在遇到了相当复杂的网站的问题。它在文件上传期间重新启动。不是在每个文件上,而是在每 5 到 10 个文件上。我们使用自定义 VirtualPathProvider,所以这可能是一个原因。我们还有一个后台工作线程,这也可能是一个原因。知道原因就好了。

问题出现在 XP (IIS 5.1) 和 Windows Server 2003 (IIS 6) 上。

分辨率:

谢谢大家,我们已经成功抓住了它。它是由达到最大重新编译次数引起的。很可能问题出在我们的 VirtualPathProvider 中,但这是完全不同的问题。

方法总结:

  1. 在 ScottGu 的博客中破解非常完美。
  2. 通过 machine.config 进行监控也很棒,但我更喜欢将其记录到我们的日志中。
  3. 事实证明,最简单的解决方案是在我的 Application_End 方法中检查 HostingEnvironment.ShutdownReason 属性。

【问题讨论】:

  • 请说出您使用的 IIS 版本。我相信我已经看到 IIS 7 在 Windows 事件日志中记录了这些事件。
  • 请更具体。什么时候重启?
  • 在 XP 和 Windows Server 2003 上测试。所以它的 IIS 5.1 和 6。
  • 我不知道。上传文件,重新加载页面,查看新文件缩略图。重复几次并重新启动应用程序。

标签: asp.net


【解决方案1】:

您是否查看过来自“Logging ASP.NET Application Shutdown Events ”的日志记录建议?这将是我对获取有关正在发生的事情的更多信息的方法的建议。

【讨论】:

    【解决方案2】:

    在应用程序文件夹中添加或删除文件夹将导致应用程序池回收(在您的情况下最可能的原因)以及许多其他事情。这是一篇有趣的文章:

    http://blogs.msdn.com/johan/archive/2007/05/16/common-reasons-why-your-application-pool-may-unexpectedly-recycle.aspx

    在同一个站点上有一些关于如何监控重启的很好的提示,这正是您实际要求的。选择是 web.config 和 EventViewer 或 Performance Monitor。

    http://blogs.msdn.com/johan/archive/2008/02/18/monitoring-application-pool-and-application-restarts.aspx

    【讨论】:

    • 我知道。但是我们不会将任何内容写入 bin 目录。配置也保持不变。我们的 .aspx 页面也很少,而且它们没有改变。事实上,这是 Web 应用程序 - 将所有内容编译到 bin 目录时的老式方法。 (但这不是预编译站点)。
    • 是的,但是您上传的文件去哪里了?您是否创建用户文件夹或其他任何东西?它在应用程序的ROOT中吗?例如C:\inetpub\wwwroot\myapp
    • 添加了更多信息,以便您了解可能发生的情况。
    【解决方案3】:

    Tess Ferrandez,ASP.NET 升级工程师有一个很好的博客,其中包含调试 ASP.NET 应用程序的各种提示和技巧。

    您特别感兴趣的帖子是:

    她会带您完成解决问题所在的步骤,以及如何解决问题。

    另外需要注意的是防病毒软件扫描站点根目录下的文件 - 这可能会更改文件的修改日期,并导致应用程序回收。

    【讨论】:

      【解决方案4】:

      看看这篇来自微软模式和实践开发者中心的文章:

      Production Debugging for .NET Framework Applications

      另请参阅Jeff Atwood 的此博客条目:

      Debugging ASPNET_WP in Production

      【讨论】:

        【解决方案5】:

        正如其他人所说,检查HostingEnvironment.ShutdownReason。如果值为BinDirChangeOrDirectoryRename,则表示某个进程正在更改应用程序文件夹中的某些文件(创建、删除、更改属性)。

        如果你找不到是谁在做这个,请使用Process Monitor 来自SysInternals。在我的例子中,是防病毒进程设置了文件 CreationTime(到他们之前的 CreationTime!)。

        【讨论】:

          猜你喜欢
          • 2012-01-30
          • 2021-12-01
          • 2011-01-02
          • 2019-11-23
          • 1970-01-01
          • 2022-11-03
          • 2011-01-10
          • 1970-01-01
          • 2023-03-30
          相关资源
          最近更新 更多