#asp.net #iis #iis-7 #iis-7.5 #shared-hosting
#asp.net #iis #iis-7 #iis-7.5 #общий хостинг
Вопрос:
Я пытаюсь настроить пользовательские страницы ошибок для своего сайта (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>
Комментарии:
1. Что вы запускаете локально? IIS 7 или 7.5? Есть несколько отличий, когда речь идет о пользовательских ошибках. Кроме того, используете ли вы маршрутизацию?
2. @ScottE локально я использую IIS 7.5 и не использую маршрутизацию (по крайней мере, сознательно)
3. Кроме того, убедитесь, что пул приложений не работает в классическом режиме против конвейера, иначе раздел system.webServer не попадет.
Ответ №1:
После долгого обсуждения с хостинг-провайдером выяснилось, что:
- мой подход в порядке
- но это не будет работать должным образом, потому что хостинг-провайдер отключил такую возможность через
machine.config
.
Поэтому никогда не стоит недооценивать количество ошибок провайдера.
Ответ №2:
У меня есть следующий комментарий в моем web.config:
для IIS 7.5 используйте ErrorMode=»Пользовательский»; используйте responseMode=»ExecuteURL» при использовании маршрутизации, в противном случае используйте responseMode =»Перенаправление»
Только не просите меня объяснять, потому что я не знаю! Я просто разобрался с этим методом проб и ошибок.
Комментарии:
1.
httpErrors
часть работает правильно на обеих машинах. несуществующие страницы, такие как site.com/1 с ними обращаются должным образом. этоcustomErrors
часть, которая приводит к неожиданному поведению на общем хостинге (такие страницы, как site.com/1.aspx обрабатываются не так, как ожидалось)2. /1 на самом деле не является ресурсом .net, поэтому я думаю, вам придется использовать: <модули runAllManagedModulesForAllRequests=»true»></modules>