customErrors with redirectMode="ResponseRewrite" не работают на виртуальном хостинге
Я пытаюсь настроить пользовательские страницы ошибок для своего сайта (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 ответа
После долгого разговора с хостинг-провайдером выяснилось, что:
- мой подход в порядке
- но это не будет работать, как ожидалось, потому что хостинг-провайдер отключил такую возможность через
machine.config
,
Таким образом, никогда не стоит недооценивать количество ошибок провайдера.
У меня есть следующий комментарий в моем web.config:
для IIS 7.5 используйте errorMode="Custom"; используйте responseMode="ExecuteURL", если используется маршрутизация, в противном случае используйте responseMode = "Redirect"
Только не проси меня объяснить, потому что я не знаю! Я просто разобрался методом проб и ошибок.