我需要确定应用程序池回收的原因。 (没有明显的原因)
有没有办法在 global.asax 文件中的 application_end 子内部确定这一点?
我已经在那里放了一些基本的日志记录,所以我知道它何时关闭,但我无法说出原因。
(而且它并不明显...似乎每两个请求某些操作都会导致应用程序结束。 我已经关闭了所有正常的回收原因,例如超时,内存检查等,等等。 相同的代码在不同的服务器上工作正常,所以我确定此设置有问题,但是?...)
自定义日志记录无需产生开销,ASP.NET 2.0 运行状况监视即可完成这项工作。可以添加以下配置,该配置将在事件日志中记录事件,其中包含重新启动应用程序池的信息。
要打开 ASP.NET 运行状况监视,您可以编辑"主"web.config
文件,通常在 %systemroot%microsoft.netframeworkv2.0.50727config
中找到。
首先,在主
web.config
中寻找<healthMonitoring>
在
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="" />
重现问题并在应用程序事件日志 fpr 中查找 ASP.NET 2.0 的来源。这应该记录回收应用程序池的原因。
尝试在事件日志中查找。 当应用程序池回收时,日志中会写入一个条目以及原因。
以下链接介绍了将在 IIS 7.5 的事件日志中看到的错误代码http://technet.microsoft.com/en-us/library/dd349270(WS.10).aspx
如果故障计算机的事件查看器中尚无日志条目,则可以修改 IIS 以记录所有应用程序池回收。
Microsoft关于如何做到这一点的文章可在下面找到
http://support.microsoft.com/kb/332088