我们有一个应用程序收集计数器统计信息,我们希望在执行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();
}
但是,它们会以意外的间隔重置。什么决定应用程序域的生命周期何时结束,并在下一个请求中调用此方法?
答案 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事件的原因。