Délégation d’errorMode dans httpErrors
Auteur Walter Oliver
Avertissement : cette fonctionnalité ne fonctionne actuellement pas comme prévu dans IIS 7.0. Elle sera traitée pour la prochaine version. Dans IIS 7.0, vous pouvez verrouiller et déverrouiller des erreurs HTTP pour des sites particuliers ou pour l’ensemble du serveur ; mais, actuellement, « Language="und"lockAllAttributesExcept="errorMode » ne fonctionne pas pour httpErrors. Cependant, vous pouvez utiliser les idées de cet article sur le déverrouillage d’attributs particuliers dans d’autres sections de configuration IIS.
Il existe des cas où un hôte peut avoir besoin de déléguer à ses clients des paramètres spécifiques dans le fichier « applicationhost.config » sans déléguer la section entière, le paramètre errorMode dans la section httpErrors est l’un d’eux, un autre est le paramètre scriptErrorSentToBrowser dans la section ASP. À des fins de résolution des problèmes, le client d’un hôte peut souhaiter afficher des erreurs détaillées dans les clients distants. Pour l’activer, l’hôte doit verrouiller tous les attributs à l’exception d’errorMode (lockAllAttributesExcept=« errorMode ») et verrouiller l’élément d’erreur (lockElements=« error »). Ainsi, les clients peuvent changer errorMode de "detailedLocalOnly" en "Détaillé" et obtenir des erreurs détaillées pour toutes leurs erreurs.
Pour déléguer le paramètre errorMode :
Autorisez la délégation de la section
<httpErrors>
dans applicationhost.config via overrideModeDefault en ouvrant%windir%\system32\inetsrv\config\applicationhost.config
avec un éditeur de texte et en modifiant l’élément <section name="httpErrors" overrideModeDefault="Deny"/> :<section name="httpErrors" overrideModeDefault="Allow" />
Utilisez lockAllAttributesExcept et lockElements pour autoriser uniquement la délégation du paramètre errorMode, recherchez l’élément
<httpErrors>
et modifiez comme suit :<httpErrors lockAllAttributesExcept="errorMode" lockElements="error" >
Votre section httpErrors peut ressembler à ceci après la modification :
<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>
À présent, en tant qu’hôte, vous pouvez utiliser appcmd pour définir le paramètre errorMode sur « Détaillé » ou « Personnalisé » (voir l’exemple ci-dessous)
%windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:httpErrors -errorMode:Detailed
ou vous pouvez demander à vos clients de placer l’instruction suivante dans leurs fichiers web.config :
<system.webServer> <httpErrors errorMode="Detailed"/> </system.webServer>
Ressources
Pour plus d’informations, voir :