2015-07-27 3 views
4

Я пытаюсь поймать ошибки из моего приложения .NET до того, как они будут записаны в журнал событий. В принятом ответе на вопрос this я заметил, что способ сделать это будет включать в себя команду Application_Error (или Application_OnError) в Global.asax.Глобальный эквивалент Application_Error в Startup.cs

Однако мы перешли на использование Startup.cs только сейчас и не можем решить, как сделать эквивалентный вызов. Принятый ответ на вопрос this предполагает, что это может быть невозможно. Кто-нибудь знает наверняка, есть ли эквивалентный способ справиться с этими ошибками?

+0

использование [elmah] (https://www.nuget.org/packages/elmah/) – dovid

ответ

6

Говоря, что вы «переключились на использование автозагрузки», я предполагаю, что вы имеете в виду использование конвейера OWIN.

Application_Error только вызывается, когда исключение выбрасывается во время запроса и не обрабатывается.

Таким образом, эквивалент в трубопроводе OWIN должен улавливать любые необработанные исключения в начале вашего трубопровода OWIN.

Другими словами, вам нужно создать пользовательский средний стеклотару с try/catch вокруг вызова _next, а затем вы можете делать то, что вы хотите, за исключением в пункте улова.

This other StackOverlow answer показывает, как это делается.

Смежные вопросы