5

我需要确定为什么应用程序池正在回收。(没有明显的原因)

有没有办法在 global.asax 文件中的 application_end 子中确定这一点?

我在那里放了一些基本的登录,所以我知道它什么时候关闭,但我不知道为什么。

(并且它没有什么明显的......似乎每几个请求某些操作都会导致应用程序结束。我已经关闭了所有正常的回收原因,例如超时,内存检查等等等。相同的代码是在不同的服务器上工作正常,所以我确定这个设置有问题,但是什么?...)

4

3 回答 3

4

您不必承担添加自定义日志记录的开销,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 的来源。这应该记录应用程序池被回收的原因。

于 2011-04-03T18:17:32.130 回答
0

如果您的问题机器的事件查看器中还没有日志条目,您可以修改 IIS 以记录所有应用程序池回收。

微软关于如何做到这一点的文章在下面找到

http://support.microsoft.com/kb/332088

于 2011-04-03T04:23:21.760 回答
0

尝试查看事件日志。当应用程序池回收时,会在日志中写入一个条目以及原因。

以下链接描述了您将在 IIS 7.5 http://technet.microsoft.com/en-us/library/dd349270(WS.10).aspx的事件日志中看到的错误代码

于 2011-04-03T04:20:22.850 回答