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

时间:2010-09-22 19:38:55

标签: 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();
}

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

2 个答案:

答案 0 :(得分:7)

Web应用重启的原因有很多。此article包含以下部分列表。

  • 编辑了web.config

  • 编辑machine.config

  • 编辑了global.asax

  • 文件在bin中更改 Web应用程序的目录,或者其中之一 bin的子目录

  • 创建,重命名或使用目录 在网络应用目录中删除

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

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

我的猜测是你的方法很好,但现在你真正想知道的是导致重启的原因以及你是否应该惊慌失措。

答案 1 :(得分:3)

在IIS 6.0中,应用程序池性能选项卡允许您在指定的空闲时间后关闭IIS工作进程。这是默认启用的,设置为20分钟。

这可能是触发意外的application_start事件的原因。