我需要确定为什么应用程序池正在回收。 (没有明显的原因)
有没有办法在global.asax文件中的application_end子区域内确定这个?
我已经在那里放了一些基本的日志,所以我知道当它关闭时,但我不知道为什么。
(并没有什么明显的......似乎每一次请求某些操作导致应用程序结束。我已经关闭了回收的所有正常原因,如超时,内存检查等等。相同的代码在不同的服务器上工作正常,所以我确定这个设置有问题,但是什么?...)
答案 0 :(得分:4)
您无需承担增加自定义日志记录的开销,ASP.NET 2.0运行状况监控可以帮助您完成工作。您可以添加以下配置,该配置将在事件日志中记录事件,并提供重新启动应用程序池的信息。
要启用ASP.NET运行状况监控,您可以编辑通常位于web.config
中的“主”%systemroot%\microsoft.net\framework\v2.0.50727\config
文件。
首先,在主人<healthMonitoring>
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="" />
重现问题并查看Application事件日志fpr ASP.NET 2.0的源代码。这应该记录应用程序池被回收的原因。
答案 1 :(得分:0)
尝试查看EventLog。当应用程序池回收时,会有一个条目写入日志以及原因。
以下链接描述了您将在IIS 7.5的事件日志中看到的错误代码 http://technet.microsoft.com/en-us/library/dd349270(WS.10).aspx
答案 2 :(得分:0)