我需要确定为什么应用程序池正在回收。(没有明显的原因)
有没有办法在 global.asax 文件中的 application_end 子中确定这一点?
我在那里放了一些基本的登录,所以我知道它什么时候关闭,但我不知道为什么。
(并且它没有什么明显的......似乎每几个请求某些操作都会导致应用程序结束。我已经关闭了所有正常的回收原因,例如超时,内存检查等等等。相同的代码是在不同的服务器上工作正常,所以我确定这个设置有问题,但是什么?...)
我需要确定为什么应用程序池正在回收。(没有明显的原因)
有没有办法在 global.asax 文件中的 application_end 子中确定这一点?
我在那里放了一些基本的登录,所以我知道它什么时候关闭,但我不知道为什么。
(并且它没有什么明显的......似乎每几个请求某些操作都会导致应用程序结束。我已经关闭了所有正常的回收原因,例如超时,内存检查等等等。相同的代码是在不同的服务器上工作正常,所以我确定这个设置有问题,但是什么?...)
您不必承担添加自定义日志记录的开销,ASP.NET 2.0 运行状况监控会为您完成这项工作。您可以添加以下配置,该配置将在事件日志中记录事件以及重新启动应用程序池的信息。
要打开 ASP.NET 运行状况监视,您可以编辑“主”web.config
文件,该文件通常位于%systemroot%\microsoft.net\framework\v2.0.50727\config
.
一、<healthMonitoring>
在master里找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="" />
重现该问题并在应用程序事件日志中查看 ASP.NET 2.0 的来源。这应该记录应用程序池被回收的原因。
如果您的问题机器的事件查看器中还没有日志条目,您可以修改 IIS 以记录所有应用程序池回收。
微软关于如何做到这一点的文章在下面找到
尝试查看事件日志。当应用程序池回收时,会在日志中写入一个条目以及原因。
以下链接描述了您将在 IIS 7.5 http://technet.microsoft.com/en-us/library/dd349270(WS.10).aspx的事件日志中看到的错误代码