Пользовательская страница 404 для сайта ASP.net на IIS7 для URL-адреса, отличного от asp.net

У меня есть сайт asp.net с кастомным 404.htm. Он настроен с помощью раздела customErrors для обработки aspx.

<customErrors mode="On" defaultRedirect="404.htm">
<error statusCode="403" redirect="404.htm" />
<error statusCode="404" redirect="404.htm" />
</customErrors>
<system.webServer>
<httpErrors>
<error statusCode="404" path="404.htm" />
<error statusCode="500" path="404.htm" />
</httpErrors>
<modules runAllManagedModulesForAllRequests="true"> ...
</system.webServer>

Он хорошо обрабатывает неправильное имя.aspx. Но для запросов, отличных от aspx, таких как неправильное имя.htm, IIS7 по-прежнему возвращает общее сообщение об ошибке, а не мое обычное. Как заставить его сделать это, скажем, для всех ошибок на этом сайте, включая 500? Стоит писать модуль или можно декларативно?


person rudnev    schedule 11.11.2009    source источник


Ответы (3)


Вы можете настроить пользовательские страницы ошибок для большинства ошибок HTTP в настройках IIS для своего веб-сайта. (В IIS 5 это вкладка Свойства-> Пользовательские ошибки, не знаю, где найти ее для IIS7)

person Mark    schedule 11.11.2009

Для того, чтобы пользовательский 404 применил бит approrpiate IIS, должен быть настроен для обработки расширения, которое вы используете.

Что касается интегрированного конвейера в IIS7, я думал (хотя IIS7 делает жизнь интересной), что по умолчанию обрабатываются все расширения.

Сначала проверьте, запущено ли у вас приложение в классическом или интегрированном режиме - если первое, то это будет частью проблемы, если второе .... Мне приходится каждый раз решать это (я делаю это недостаточно) ).

person Murph    schedule 11.11.2009

При локальном тестировании iis7 будет выдавать общее сообщение об ошибке, если вы не добавите атрибут в httpErrors, errorMode="Custom". Вам нужно будет отредактировать C:\Windows\System32\inetsrv\config\applicationHost.config, чтобы разрешить это.

person Brian    schedule 07.01.2010