Как я могу разбить необработанное исключение в ASP.NET?
При отладке приложения в Visual Studio существует два варианта устранения исключений. Перерыв, как только будет выбрано исключение, и разрыв только тогда, когда исключение не будет обнаружено. Это отлично работает при разработке настольных приложений. Однако при разработке приложений ASP.NET все исключения в конечном итоге попадают в код в IIS. Можно ли отключить это поведение, чтобы отладчик ломался, когда код приложения ASP.Net не смог поймать исключение?
Edit:
Просто, чтобы быть ясным, я не хочу ломаться всякий раз, когда генерируется исключение, так как много раз они обрабатываются моим кодом очень хорошо, и я не хочу останавливаться на каждом исключении. Я просто хочу остановиться на исключениях, которые не обрабатываются моим кодом.
Edit:
В Visual Studio 2008 это не проблема. В Visual Studio 2003 все исключения обрабатывались как пользовательские, поскольку время выполнения ASP.NET устраняло все исключения, чтобы не прерывать процесс веб-сервера. Похоже, что в Visual Studio 2008 этот тип исключения исключений не учитывается при проверке исключений, необработанных пользователем.
Ответы
Ответ 1
Под Debug-> Исключения, проверьте столбец "Брошенный" Общих исключений времени исполнения (как минимум). Отметьте "Брошенный" для других исключений, которые вас интересуют.
Теперь, если отладчик подключен (активная отладка или "Присоединить к процессу"), ваше приложение ASP.NET сломается в исключении CLR (или любом другом выбранном вами исключении).
[РЕДАКТИРОВАТЬ]
Если вы хотите разбить только на необработанные исключения, в разделе Debug-> Исключения снимите флажок "Брошено" на всех типах исключений и убедитесь, что "Необработанный пользователь" отмечен для тех исключений, которые вас интересуют.
![Exception Interface]()
Затем, если отладчик подключен, ваше приложение ASP.NET будет зависать при каждом выбранном вами необработанном исключении, независимо от того, в какой момент среда выполнения в конечном итоге перехватит исключение. Образец:
![Debugger breaking on User-unhandled exception]()