我创建了一个ASP.NET MVC应用程序,其初始化程序连接到PreApplicationStartMethodAttribute。初始化时,集合被实例化,实现我定义的接口。当我实例化这个集合,w3wp.exe的崩溃,并在事件日志以下两个难以理解的条目:初始化集合时W3WP崩溃
Faulting application name: w3wp.exe, version: 7.5.7600.16385, time stamp: 0x4a5bd0eb
Faulting module name: clr.dll, version: 4.0.30319.1, time stamp: 0x4ba21eeb
Exception code: 0xc00000fd
Fault offset: 0x0000000000001177
Faulting process id: 0x1348
Faulting application start time: 0x01cb0224882f4723
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Report Id: c6a0941e-6e17-11df-864d-000acd16dcdb
和:
Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
P1: w3wp.exe
P2: 7.5.7600.16385
P3: 4a5bd0eb
P4: clr.dll
P5: 4.0.30319.1
P6: 4ba21eeb
P7: c00000fd
P8: 0000000000001177
P9:
P10:
Attached files:
These files may be available here:
Analysis symbol:
Rechecking for solution: 0
Report Id: c6a0941e-6e17-11df-864d-000acd16dcdb
Report Status: 0
如果我删除了收集的实例,应用程序正常启动。如果我离开实例化,w3wp崩溃。如果我修改了界面,w3wp仍然崩溃。我已经尝试了每一个我能想到的保持实例化但其他方面都做了其他变化的变体,但w3wp仍然崩溃。
我最大的问题在于,我完全不知道为什么w3wp崩溃。这不是一个StackOverflowException或任何具体的事情,我得到的只是上面引用的非智能垃圾。
我试图使用DebugDiag和IISState来调试w3wp进程,但DebugDiag仅适用于x64的后转储分析(我在Windows 7 x64上运行,所以w3wp进程因此是64位)和IISStat说以下,当我尝试运行它:
D:\Programs\iisstate>IISState.exe -p 9204 -d
Symbol search path is: SRV*D:\Programs\iisstate\symbols*http://msdl.microsoft.com/download/symbols
IISState is limited to processes associated with IIS.
If you require a generic debugger, please use WinDBG or CDB.
They are available for download from http://www.microsoft.com/ddk/debugging.
This error may also occur if a debugger is already attached to the process
being checked.
Incorrect Process Attachment
我仔细检查了10次,我的w3wp进程的进程ID是正确的。我怀疑IISState也只能调试x86进程。在应用程序的任何位置设置断点都没有任何作用。一旦请求从浏览器传递到IIS,中断点不会被击中,并且w3wp崩溃。在Visual Studio 2010中使用F5启动应用程序或启动另一个应用程序以启动并运行w3wp进程,然后将VS2010调试器附加到该应用程序,然后访问错误应用程序并没有帮助。
我也尝试作为以及它添加到我的web.config
文件中KB-911816描述添加一个HTTP模块:
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="true" />
</runtime>
</configuration>
不用说,它使绝对没有什么区别。所以我没有办法调试w3wp进程,没办法从中提取任何信息,并完成在我的事件日志中转储垃圾。如果任何人有任何想法如何调试这个问题,请让我知道!