Я осматривал для некоторых подходов к использованию ELMaH с ASP.NET MVC так, чтобы я мог использовать пользовательскую ошибочную страницу для всех исключений включая 404 с.
Нет никакой нехватки вопросы выяснение, как получить/Shared/Error.aspx, работающий правильно в ASP.NET MVC - или с или без ELMaH. У меня не было проблемы с той задачей, но я чувствую, как будто мое решение использования пользовательских 404 страниц вместе с ELMaH было слишком просто, и я не могу встряхнуть чувство, что должно быть больше к нему.
После включения customErrors в сети. Конфигурация, я создал новое Действие в своем 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) или сверхдумаю проблема, где простое решение существует? Цените любой вход.
Я уверен, что ASP.NET справится с этой задачей за вас, вам не обязательно вызывать что-то для перенаправления на действие 404 внутри вашего global.asax. Смотрите пример ниже.
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/servererrors/404.aspx" />
</customErrors>
</system.web>
</configuration>