Какие варианты обработки ошибок у меня есть в ASP.NET MVC? - PullRequest
2 голосов
/ 04 декабря 2008

Какие опции у меня есть для обработки ошибок в ASP.NET MVC?

Должен ли я вызвать GetLastError на странице ошибки и отправить электронное письмо или зарегистрировать его?

Ответы [ 3 ]

1 голос
/ 04 декабря 2008

В вашем Global.asax вы можете реализовать что-то вроде следующего:

protected void Application_Error()
{
    Exception lastException = Server.GetLastError();
    GetLogger().Fatal(lastException); // your custom loggin code
}
1 голос
/ 05 декабря 2008

McvContrib имеет атрибуты "Спасение" - идея, заимствованная из монорельса. Вы можете сделать так:

[Rescue("default", AutoLocate = true)]
public class MyController : ConventionController

Затем вы создаете спасательные виды на основе соглашения следующим образом:

  • Views / Shared / Спасает / Exception.aspx
  • Views / Shared / Спасает / MyCustomException.aspx

Etc. Когда в контроллере происходит необработанное исключение, фильтр восстановления отображает страницу с тем же именем, что и тип исключения. Если точное совпадение не найдено, он отображает Exception.aspx. (Я думаю, что, возможно, он работает по иерархии наследования до тех пор, пока не найдет совпадение.)

Эти аварийные представления реализуют ViewPage , поэтому на странице представления вы получаете доступ к исключению как ViewData.Model.Exception. Это единственное место, где я помещаю код в коде позади - для регистрации исключения - потому что это создает хорошую границу приложения.

Если вы не хотите использовать MvcContrib, вы можете изучить код для реализации собственного решения.

1 голос
/ 04 декабря 2008
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...