警告:此功能当前在 IIS 7.0 中未按预期工作。下一个版本正在解决这个问题。在 IIS 7.0 中,可以为特定站点或为整个服务器锁定和解锁 HTTP 错误;但是,目前,“lockAllAttributesExcept="errorMode”不适用于 httpErrors。然而,可以使用本文中介绍的有关解锁其他 IIS 配置部分中特定属性的内容。
在某些情况下,托管商可能需要将“applicationhost.config”文件中的特定设置委派给客户,而不委派整个部分,httpErrors 部分中的 errorMode 设置就是其中之一,另一个是 ASP 部分中的 scriptErrorSentToBrowser 设置。 出于故障排除目的,托管商的客户可能希望在远程客户端中显示详细错误。 若要启用该功能,托管商需要锁定除 errorMode 之外的所有属性 (lockAllAttributesExcept="errorMode"),并锁定错误元素 (lockElements="error")。 这样,客户就可以将 errorMode 从“detailedLocalOnly”更改为“Detailed”,他们将获得所有错误的详细错误信息。
委派 errorMode 设置:
允许通过 overrideModeDefault 委派 applicationhost.config 中的
<httpErrors>部分,方法是使用文本编辑器打开%windir%\system32\inetsrv\config\applicationhost.config并更改 <section name="httpErrors" overrideModeDefault="Deny" /> 元素,如下所示:<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>
资源
有关详细信息,请参阅: