asp.net – 服务应用程序池“X”的进程与Windows进程激活服务遇到致命的通信错误

前端之家收集整理的这篇文章主要介绍了asp.net – 服务应用程序池“X”的进程与Windows进程激活服务遇到致命的通信错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在IIS 7.5下运行ASP.NET 4.0应用程序。我们的应用程序池一天几次,意外地回收。发生这种情况时,我们的系统日志会显示以下事件:

服务应用程序池“X”的进程与Windows进程激活服务发生致命的通信错误。进程ID为’5768’。数据字段包含错误号。

要么

服务应用程序池“X”的进程无法响应ping。进程ID为’1032’。

几乎总是在应用程序日志中同时有一个相应的事件:

Faulting application name: w3wp.exe,version: 7.5.7600.16385,time stamp: 0x4a5bcd2b
Faulting module name: clr.dll,version: 4.0.30319.269,time stamp: 0x4ee9ae83
Exception code: 0xc00000fd
Fault offset: 0x00001916
Faulting process id: 0x508
Faulting application start time: 0x01cd4d8958ecf9ad
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 8dcc413b-b98a-11e1-8075-001c23d6d910

所以我安装了IIS Debugging Tools并设置了一个崩溃规则,指定了“一个特定的IIS Web应用程序池”,没有第一次机会异常记录,“Advanced Settings”(异常,断点,事件)下没有任何内容

我同时使用以下命令行从Windows调试工具运行ADPlus:

adplus -crash -pn w3wp.exe -NoDumpOnFirst -o c:\logs

但是,由于我附加了调试器,我在系统日志中收到了几个“警告”级消息(关于“进程服务应用程序池”X“遇到致命的通信错误”),但是我没有在应用程序日志中得到相应的错误级别事件。

我唯一可以得到的是以下(其中约有50个):

[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 3300. Exit code - 0x800703e9
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4992. Exit code - 0x800703e9
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 5456. Exit code - 0x800703e9
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4924. Exit code - 0x800703e9

退出代码0x800703e9表示堆栈溢出某处,这是幸运的,因为一旦我可以找到它应该很容易修复。

但是,为了做到这一点,我需要更多的崩溃转储信息,以便我可以使用WinDbg打开它们,并使用“!clrstack”命令来确定我的问题。

我的问题是:我的调试工具配置不正确或我误会事件日志?似乎我们的应用程序池是回收,只要我在系统日志中看到有关“Windows进程激活服务的致命通信错误”的事件,但是当这些事件发生时,我没有从IIS调试工具或ADPlus得到任何崩溃转储信息。由于某些原因,由于我附加了调试器,所以在应用程序日志中,我没有收到任何与我的系统日志警告事件相对应的“错误”事件。不知道为什么我以某种方式需要使用CLR信息获取完整的故障转储,以便我可以弄清楚我的问题在哪里。

我唯一可以想到的其他事情是Windows错误报告服务没有运行。不知道是否需要。

感谢任何帮助。

解决方法

您在应用程序日志中获取的异常代码和线程退出代码都表示您有堆栈溢出。令人困惑的是,为什么进程没有崩溃,当线程退出与堆栈溢出错误。无论如何,为了启用堆栈溢出异常中断,命令是:
sxe sov

请注意,您将需要使用x86版本的调试器,因为您的应用程序池配置为32位进程。

猜你在找的asp.Net相关文章