Делегирование errorMode в httpErrors
Предупреждение. Эта функция в настоящее время не работает должным образом в IIS 7.0. Она рассматривается в следующем выпуске. В IIS 7.0 можно блокировать и разблокировать ошибки HTTP для определенных сайтов или для всего сервера. Но в настоящее время lockAllAttributesExcept="errorMode" не работает для httpErrors. Тем не менее, вы можете использовать идеи из этой статьи о разблокировке определенных атрибутов в других разделах конфигурации IIS.
Бывают случаи, когда хостере может потребоваться делегировать своим клиентам определенные параметры в файле applicationhost.config, не делегируя весь раздел. Параметр errorMode в разделе httpErrors является одним из них, а другой — параметр scriptErrorSentToBrowser в разделе ASP. Для устранения неполадок клиент хост-приложения может захотеть показать подробные ошибки в удаленных клиентах. Чтобы включить его, средству размещения потребуется заблокировать все атрибуты, кроме errorMode (lockAllAttributesExcept="errorMode") и заблокировать элемент error (lockElements="error"). Таким образом, клиенты могут изменить errorMode с detailedLocalOnly на "Detailed" и получить подробные ошибки для всех своих ошибок.
Чтобы делегировать параметр errorMode, выполните следующие действия:
Разрешите делегирование
<httpErrors>
раздела в applicationhost.config с помощью overrideModeDefault, открыв%windir%\system32\inetsrv\config\applicationhost.config
в текстовом редакторе и изменив <раздел name="httpErrors" overrideModeDefault="Deny" /> element следующим образом:<section name="httpErrors" overrideModeDefault="Allow" />
Используйте lockAllAttributesExcept и lockElements, чтобы разрешить делегирование только параметра errorMode, найдите
<httpErrors>
элемент и измените его следующим образом:<httpErrors lockAllAttributesExcept="errorMode" lockElements="error" >
После изменения раздел httpErrors может выглядеть следующим образом:
<httpErrors lockAllAttributesExcept="errorMode" lockElements="error"> <error statusCode="401" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="401.htm" /> <error statusCode="403" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="403.htm" /> <error statusCode="404" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="404.htm" /> <error statusCode="405" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="405.htm" /> <error statusCode="406" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="406.htm" /> <error statusCode="412" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="412.htm" /> <error statusCode="500" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="500.htm" /> <error statusCode="501" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="501.htm" /> <error statusCode="502" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="502.htm" /> </httpErrors>
Теперь вы, как организатор, можете использовать appcmd, чтобы задать для параметра errorMode значение "Detailed" или "Custom" (см. пример ниже).
%windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:httpErrors -errorMode:Detailed
Или вы можете попросить клиентов поместить следующую инструкцию в свои web.config файлы:
<system.webServer> <httpErrors errorMode="Detailed"/> </system.webServer>
Ресурсы
Дополнительные сведения см. в разделах: