Пользовательские ошибки страницы 404 для расширений .aspx

Я пытался настроить свое веб-приложение для перенаправления на пользовательскую страницу 404. Он работает для всех URL-адресов, кроме тех, у которых есть расширение «.aspx».

Сервер - это Windows Server 2008, и вот следующие настройки, которые у меня есть в моем web.config (используя google.com в качестве быстрого примера):

<customErrors defaultRedirect="http://www.google.com" mode="On" redirectMode="ResponseRedirect"></customErrors>

<httpErrors errorMode="Custom">
<clear />
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404-Page/" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="/404-Page/" responseMode="ExecuteURL" />
</httpErrors>

Опять же, ошибки HTTP работают для всего, кроме расширений «.aspx».


person Channafow    schedule 17.09.2012    source источник


Ответы (3)


Элемент customErrors предоставляет информацию о настраиваемых сообщениях об ошибках для приложения ASP.NET. Попробуйте добавить error дочерний элемент к элементу customErrors для конкретного кода ошибки HTTP, который вы хотите перехватить.

<error statusCode="404" redirect="error404.htm"/>
person DaveB    schedule 17.09.2012
comment
Что происходит, когда вы вводите URL-адрес в браузере для несуществующего файла .aspx? - person DaveB; 18.09.2012
comment
Просто переходит на обычную страницу ошибок ASP, а не на мою настраиваемую страницу. - person Channafow; 26.09.2012

У меня была аналогичная проблема в IIS6. В итоге я обработал это в Application_Error в global.asax. Чтобы заставить его работать, мне пришлось установить пользовательскую страницу 404 на страницу aspx, которой не было (если бы я установил ее на существующую страницу aspx, она была бы поглощена внутренней обработкой ошибок EPiServer ...)

person Anders Bornholm    schedule 19.09.2012

Чтобы решить эту проблему, нам пришлось создать модуль, который перехватывает любые ошибки и переводит пользователя на мою настраиваемую страницу 404, установленную в web.config (в customErrors). Модуль будет добавлять обработчик событий всякий раз, когда приложение получает ошибку:

    public void Init(HttpApplication context)
    {
        context.Error += new EventHandler(FileNotFound_Error);
    }

А функция FileNoteFound_Error выполняет перенаправление.

person Channafow    schedule 26.09.2012