Я искал подходы к использованию 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
ActionResult:
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), или обдумываю проблему, где существует более простое решение? Цени любой вклад.