Я создал приложение ASP.NET MVC, к которому инициализатор подключен к PreApplicationStartMethodAttribute . При инициализации создается экземпляр коллекции, который реализует определенный мной интерфейс. Когда я создаю экземпляр этой коллекции, w3wp.exe вылетает со следующими двумя непонятными записями в журнале событий:
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. Я подозреваю, что IISState тоже может отлаживать только процессы x86. Установка точки останова в любом месте приложения абсолютно ничего не делает. Точка останова не достигнута, и w3wp падает, как только запрос поступает в IIS из браузера. Запуск приложения с помощью F5 в Visual Studio 2010 или запуск другого приложения для запуска и запуска процесса w3wp, а затем присоединение к нему отладчика VS2010 с последующим посещением неисправного приложения.
Я также попытался добавить модуль HTTP, как описано в KB-911816 , а также добавить его в мой web.config
файл:
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="true" />
</runtime>
</configuration>
Само собой разумеется, это не имеет абсолютно никакого значения. Поэтому у меня нет возможности отлаживать процесс w3wp, нет возможности извлечь из него какую-либо информацию и заполнить весь мусор, записанный в моем журнале событий. Если у кого-нибудь есть идеи по устранению этой проблемы, пожалуйста, дайте мне знать!