Как я мешаю IIS7 произвести его собственные 404, прежде чем мое приложение MVC получит шанс обработать его?

У меня есть приложение ASP.NET MVC 2, которое имеет обработчик событий Application_Error в global.asax. В этом я обнаруживаю случай, где Типом исключительной ситуации является HttpException, и код HTTP 404, и перенаправляющий к моей собственной странице с 404 обработками.

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

Когда я запрашиваю несуществующий URL, IIS7 показывает свои собственные 404 страницы, и насколько я могу сказать, мой метод Application_Error никогда не называют.

Как я фиксирую это?

13
задан Gary McGill 14 April 2010 в 09:22
поделиться

4 ответа

Я ответил на этот вопрос в другом посте: Приложение ASP.NET, размещенное на IIS7, игнорирует пользовательские ошибки и возвращается к ошибкам IIS

"Чтобы отключить сообщения об ошибках IIS, вы должны установить

  Response.TrySkipIisCustomErrors = true;

в вашей странице ошибок. После этого ваши сообщения об ошибках должны отображаться без проблем."

6
ответ дан 2 December 2019 в 01:10
поделиться

В ASP.NET MVC я использую пользовательский ErrorController с методом Index (обработчик по умолчанию) и несколькими пользовательскими обработчиками (401, 404), используя следующие настройки web.config

<!--  CUSTOM ERROR MESSAGES
Set customErrors mode="On" or "RemoteOnly" to enable custom error messages, "Off" to disable. 
Add <error> tags for each of the errors you want to handle.   
"On" Always display custom (friendly) messages.
"Off" Always display detailed ASP.NET error information.
"RemoteOnly" Display custom (friendly) messages only to users not running 
on the local Web server. This setting is recommended for security purposes, so 
that you do not display application detail information to remote clients. -->
<customErrors mode="Off" defaultRedirect="~/Error">
    <error statusCode="401" redirect="~/Error/Unauthorized" />
    <error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>

Я не использую Application_Error, кроме как в целях логирования.

0
ответ дан 2 December 2019 в 01:10
поделиться

Нельзя ли просто отключить 404 httpError:

    <httpErrors errorMode="Custom">
        <remove statusCode="404" subStatusCode="-1" />
    </httpErrors>
5
ответ дан 2 December 2019 в 01:10
поделиться

Это обсуждается в учебниках по обзору MVC. Возможно, ваш IIS 7 настроен в классическом режиме. См:

Использование ASP.NET MVC с различными версиями IIS (C#)

0
ответ дан 2 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: