Как я регистрирую необработанные исключения в ASP.NET MVC?

Быстрый способ - использовать zip для обработки символ за символом и просто взять максимум в каждой позиции;

arr = ['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',
       ' E       E               EEE                       ',
       '                     TT                            ',
       '                       CC                      CCCC']

''.join(max(x) for x in zip(*arr))

' EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC'
7
задан Zack Peterson 1 May 2009 в 15:50
поделиться

4 ответа

Я только что нашел это в блоге Скотта Хансельмана здесь под названием ELMAH , который является Регистратором / Обработчиком ошибок, который вы можете использовать без необходимости изменять свой код , Возможно, вы захотите разобраться с этим, поскольку он, похоже, прекрасно работает с MVC.

9
ответ дан 6 December 2019 в 12:54
поделиться

Вы должны указать виртуальный путь, то есть путь относительно базы приложения (т.е. никаких путей, внешних по отношению к приложению), поэтому что-то вроде: Server.Transfer ( "error.html") или Server.Transfer ( "/ error.html") или Server.Transfer ( "~ / error.html")

2
ответ дан 6 December 2019 в 12:54
поделиться

ELMAH - отличный обработчик ошибок для перехвата необработанных исключений. Он легко подключается к вашему веб-приложению через HttpModules и имеет различные опции для уведомлений и регистрации.

Особенности:

  • SQL, XML, SQLite, InMemory Logging
  • Уведомление по электронной почте
  • RSS-канал
  • Подробно! регистрация исключений
  • Простая интеграция
  • Сигнализация ошибок - сигнализирует обработчику ошибок об ошибке, в то время как «умирая» для пользователя

И FYI, SO использует ELMAH, хотя и раздвоенную версию. Это лучшее архитектурное объяснение и учебное пособие по настройке

3
ответ дан 6 December 2019 в 12:54
поделиться

По умолчанию приложения ASP.NET MVC имеют представление Shared / Error.aspx, наследуемое от

System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>

Если ваш контроллер использует атрибут [HandleError], все исключения будут пузыриться до тех пор, пока они не будут перехвачены, и они окажутся на этой странице.

Я просто добавил встроенный Page_Load (действительный в этом случае, так как это конец строки):

<script runat="server">
  Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
    MyExceptionHandlerService.LogException("exceptionsource", this.Model.Exception)
  End Sub
</script>

После него, дружественный " Извините ... "сообщение. Похоже, что ELMAH более устойчив, но для моих нужд этого было достаточно.

2
ответ дан 6 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: