繁体   English   中英

如何找出重新启动ASP.NET Web应用程序的原因

[英]How to find out why an ASP.NET web application is being restarted

在我的Web应用Application.End中,由于某种原因在每个请求之后调用Application.End并重新启动应用程序。 当我在Applicaion_End设置断点时,我没有得到有用的堆栈跟踪。 此外,事件查看器中没有条目。 根据MSDN,以下可能导致应用程序重新启动:

  • 从应用程序的Bin文件夹添加,修改或删除程序集。
  • 从App_GlobalResources或App_LocalResources文件夹添加,修改或删除本地化资源。
  • 添加,修改或删除应用程序的Global.asax文件。
  • 在App_Code目录中添加,修改或删除源代码文件。
  • 添加,修改或删除配置文件配置。
  • 在App_WebReferences目录中添加,修改或删除Web服务引用。
  • 添加,修改或删除应用程序的Web.config文件。

我想我的代码会更改一些触发应用程序重启的文件。 有没有办法找出导致应用程序重新启动的确切原因?

编辑:我现在通过逐步执行代码并在资源管理器中查看时间戳来解决我的问题。 在应用程序启动时,我正在从访问数据库中读取一个值,该值会导致创建和删除.ldb文件。 但是,这个问题还没有得到解答。 是否有任何日志记录导致应用程序重新启动的此类事件?

Tess Ferrandez撰写了一篇关于如何确定App Domain回收原因的博客文章 苔丝有关于如何记录重启事件的话:

你如何确定导致appdomain重启的原因? 在ASP.NET 2.0中,您可以使用内置的运行状况监视事件来记录应用程序重新启动以及重新启动的原因。 为此,您需要更改C:\\ WINDOWS \\ Microsoft.NET \\ Framework \\ v2.0.50727 \\ CONFIG目录中的主web.config文件并添加以下部分

<healthMonitoring>
  <rules>
    <add name="Application Lifetime Events Default" 
         eventName="Application Lifetime Events"
         provider="EventLogProvider" profile="Default" minInstances="1"
         maxLimit="Infinite" minInterval="00:01:00" custom="" />

要打开IIS6的日志记录,您可以使用:

cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255

对于IIS7,您可以从IIS管理器 - 应用程序池 - 高级设置控制它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM