如何确定ASP.NET应用程序域的生命周期

Ble*_*ser 6 asp.net iis global-asax

我们有一个应用程序收集计数器统计信息,我们希望在执行iisreset命令后重置值,这就是全部.

微软表示Application_Start:

在请求ASP.NET应用程序中的第一个资源(例如页面)时调用.在应用程序的生命周期中, Application_Start方法仅被调用一次.您可以使用此方法执行启动任务,例如将数据加载到缓存中以及初始化静态值.

这就是我们目前的做法:

protected void Application_Start(object sender, EventArgs e)
{
    _counters.Get<AutoCounter>("TAS:RequestCount").Reset();
    _counters.Get<AutoCounter>("TAS:RequestTime").Reset();
    _counters.Get<AutoCounter>("TAS:TimeBetweenErrors").Reset();
    _counters.Get<AutoCounter>("TAS:ErrorCount").Reset();
}
Run Code Online (Sandbox Code Playgroud)

但是,它们会以意外的间隔重置.什么决定应用程序域的生命周期何时结束,并在下一个请求中调用此方法?

Con*_*rix 7

Web应用程序重新启动的原因有很多.该文章 包含以下部分名单.

  • web.config已编辑

  • machine.config已编辑

  • global.asax已被编辑

  • 文件
    在Web应用程序的bin 目录或
    bin的子目录中更改


  • 在Web应用程序目录中创建,重命名或删除目录

  • ASP.NET文件(aspx,asmx等)编辑(因此重新编译)
    超过20次,在机器配置中默认设置为
    名为numRecompilesBeforeApprestart 的元素

  • 通过设置 machine.config中元素中的各种
    属性
    ,这会影响
    工作进程本身的重启/关闭.在Windows
    2003上,当不使用IIS5隔离
    模式(默认情况下不使用)时,将
    忽略这些元素,而是
    使用IIS管理器中的应用程序池中的设置

我的猜测是你的方法很好,但现在你真正想知道的是导致重启的原因以及你是否应该警惕.