Вопрос

Я искал некоторые подходы к использованию 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>

http://www.xefteri.com/articles/show.cfm?id=11

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top