Я испытываю случайное необработанное исключение, приводящее к тому, что w3wp превращается в sh. Я хочу отследить причину этого исключения. У меня уже есть глобальное переопределение обработчика Application_Error в моем классе MvcApplication, поэтому cra sh должен быть вызван некоторым исключением из контекста http-context. Чтобы воспроизвести проблему, я сам генерирую ее в обратном вызове таймера и пытаюсь ее отследить. Упрощенный код, такой как
public static class MonitorTimers
{
public static Timer _taskMonitorTimer = new Timer(state: null, dueTime: 1000, period: 1000, callback: (state) =>
{
throw new Exception("Ouch! Me dead.");
});
}
В моей локальной среде разработки (iis express, выпущенной VS2017) и тестовой среде (IIS 8.5), когда приложение запускается и затем падает, в средстве просмотра событий можно увидеть следующее :
Наиболее полезные события 1325 и 1026, полученные из ASP.NET
и .NET Runtime
, показывают трассировку стека - только то, что мне нужно.
Моя проблема в том, что на моей рабочей машине (также IIS 8.5) я не могу найти полезное событие 1325. Только отчет cra sh, содержащий не больше информации, чем я знаю. Так что я не знаю, что вызвало ошибку. Я мог бы окружить свой обратный вызов таймера блоком try ... catch, но ошибка могла быть вызвана чем-то другим (неуправляемые библиотеки, ошибка в инициализации класса stati c), тогда я все еще не могу отследить.
Так что предложения о том, почему отсутствует событие 1325 или какие-то инструменты, которые могут показать журнал и проанализировать трассировку стека, очень приветствуются. Спасибо.