Имеет ли такой подход к использованию ELMaH с MVC запах?
-
19-09-2019 - |
Вопрос
Я искал некоторые подходы к использованию ELMaH с ASP.Net MVC, чтобы можно было использовать пользовательскую страницу ошибок для всех исключений, включая 404.
Есть нет недостатка из вопросы спрашивать как заставить /Shared/Error.aspx работать правильно в ASP.Net MVC — с ELMaH или без него.У меня не возникло проблем с этой задачей, но мне кажется, что мое решение по использованию пользовательской страницы 404 вместе с ELMaH было слишком простым, и я не могу избавиться от ощущения, что это должно быть нечто большее.
После включения customErrors в Web.Config я создал новое действие в своем HomeController:
public ActionResult PageNotFound()
{
return null;
}
Оттуда я добавил новый метод в свой файл Global.asax, чтобы воспользоваться возможностями фильтрации журналов ELMaH и, после регистрации исключения, перенаправить ответ обратно на вышеупомянутый PageNotFound
Результат действия:
public void errorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (e.Exception.GetType().Equals(typeof(HttpException)))
{
HttpException ex = (HttpException)e.Exception;
if (ex.GetHttpCode() == 404)
Response.Redirect("/Home/PageNotFound");
}
}
Я упускаю из виду что-то, что поставляется с MVC по умолчанию (потому что я все еще нахожу свой путь ко многим вещам, касающимся MVC), или слишком много думаю о проблеме, где существует более простое решение?Цените любой вклад.
Решение
Я уверен, что ASP.NET может справиться с такими вещами за вас, вам не обязательно вызывать что-либо для перенаправления на действие 404 внутри вашего global.asax.См. пример ниже.
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/servererrors/404.aspx" />
</customErrors>
</system.web>
</configuration>