ASP.NET: как правильно перенаправить запросы с ошибками 404? - PullRequest
3 голосов
/ 20 марта 2010

Я бы хотел, чтобы мое приложение ASP.NET MVC перенаправляло ошибочные запросы на соответствующие методы действий определенного контроллера. Это прекрасно работает на моей машине под управлением Windows 7, но не на моей рабочей машине под управлением Windows 2008 R2.

Я настроил свой web.config следующим образом:

<customErrors mode="On" defaultRedirect="/Error/ServerError/500">       
            <error statusCode="403" redirect="/Error/AccessDenied" />
            <error statusCode="404" redirect="/Error/FileNotFound" />
</customErrors>

Этот раздел customErrors прекрасно работает на обеих моих машинах (производство и разработка) для 500 внутренних ошибок сервера.

Это также отлично работает для 404 ошибок на моей машине разработки.

Однако он не перенаправляет ошибки 404 на рабочий компьютер должным образом. Вместо / Error / FileNotFound я получаю стандартную страницу 404, которая поставляется с IIS 7.

В чем здесь проблема?

Ответы [ 2 ]

1 голос
/ 20 марта 2010

См. В чем разница между customErrors и httpErrors?

Также см. http://msdn.microsoft.com/en-us/library/ms690576.aspx

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

Скорее всего, проблема связана с вашим режимом IIS Pipeline . Может быть, ваше производство может работать в IIS Classic Pipeline Mode?

EDIT

Это наоборот. В режиме Integrated Pipeline тег customErrors не используется.

1 голос
/ 20 марта 2010

В случае, если у кого-то еще есть такая же проблема: решение состоит в том, чтобы добавить элемент httpErrors в раздел system.webServer:

<httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/Error/FileNotFound" responseMode="ExecuteURL" />
</httpErrors>

В Windows 2008 R2 это также можно сделать с помощью панели управления IIS (см. «Страницы ошибок»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...