我在IIS 7上运行一个ASP.NET应用程序。
服务器幸福地嗡嗡直到
它看起来像一个工人进程回收,对吧? 但w3wp永远不会死亡,一个新的w3wp永远不会开始,没有回收logging。
这可能是什么造成的? 我如何防止它发生?
技术细节:
更新
我在加载testingWeb应用程序时遇到这种情况。
在整个testing过程中,我已经多次回收并重新启动Web服务器。 显然,这改变了正在使用的encryption密钥来获取networking资源,如下所述: WebResource.axd上的“Padding is Invalid and Can not be removed”exception 。 testing软件不够聪明,以响应一个新的密钥来改变它的请求(没有显着的finagling)。
所有这一切的结果是,几个请求与.Netencryption例外失败。 我确定我不关心这些请求,并将其从testing中删除。 这似乎照顾了这个问题是关于奇怪的假回收。
还有两件事情是未知的
只要应用程序文件夹中的文件发生更改,就会触发应用程序池的回收。 防病毒实时监控器是臭名昭着的,但实际上有相当多的潜在违规者列表。 从苔丝费兰德斯检查以下内容:
尤其是,您可以启用ASP.Net运行状况监视事件,将活动logging到应用程序事件日志中,并重新启动。
Application_Start事件只会在应用程序生命周期开始时提升一次。 Connection_Abandoned_By_ReqQueue不是我听说过的,但是听起来像一个Web应用程序在Application_Start的Global.asax处理程序中做了一些不寻常的事情。
由于导致应用程序退出的exception,Application_End事件被触发; 标志着应用程序生命周期的结束。
我假设你知道ASP.Net应用程序的生命周期,因为它适用于IIS6和IIS7,如果不是的话:
IIS 6.0 – http://msdn.microsoft.com/en-us/library/ms178473.aspx
IIS 7.0 – http://msdn.microsoft.com/en-us/library/bb470252.aspx
如果你以前没有看过这些东西,这些文章可能有助于消除任何困惑。
要解决这个问题,我首先要确定错误的应用程序。 如果可以,请查看Global.asax处理程序,否则,检查应用程序的更新。
这也可能是一个内存损坏的情况下,根据我读到的exception,你得到的一个线程,但我不知道你会开始调查,如果是这样的话。