customErrors with redirectMode = "ResponseRewrite" не работают на виртуальном хостинге - PullRequest
4 голосов
/ 14 октября 2011

Я пытаюсь настроить пользовательские страницы ошибок для своего сайта (ASP.NET 4, интегрированный конвейер).

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

Если я изменю redirectMode="ResponseRewrite" на redirectMode="ResponseRedirect", то все будет нормально работать на локальной и общей машине.

error.aspx - это реальный файл, который находится рядом с файлом web.config (в корнесайта).На сайте нет Global.asax файла.

На локальном компьютере работает IIS 7.5, я не использую маршрутизацию (по крайней мере, сознательно), и общий хостинг сообщает, что Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319

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

Вот выдержка из моего web.config файла:

<system.webServer>
    <httpErrors errorMode="Custom">
        <remove statusCode="404" />
        <error statusCode="404" path="/error.aspx" responseMode="ExecuteURL" />      
    </httpErrors>
</system.webServer>
<system.web>
    <customErrors mode="On" defaultRedirect="error.aspx" redirectMode="ResponseRewrite">
        <error statusCode="404" redirect="~/error.aspx"/>
    </customErrors>
    <httpRuntime requestValidationMode="2.0" />
</system.web>

Ответы [ 2 ]

2 голосов
/ 15 октября 2011

После долгого разговора с хостинг-провайдером выяснилось, что:

  • мой подход хорош
  • , но он не будет работать, как ожидалось, потому что хостинг-провайдер отключилспособность через machine.config.

Итак, никогда не стоит недооценивать количество получателей провайдера.

1 голос
/ 14 октября 2011

У меня есть следующий комментарий в моем web.config:

для IIS 7.5, используйте errorMode = "Custom"; используйте responseMode = "ExecuteURL", если используется маршрутизация, в противном случае используйте responseMode = "Redirect"

Только не проси меня объяснить, потому что я не знаю! Я только разобрался методом проб и ошибок.

...