Delegación de errorMode en httpErrors
por Walter Oliver
Advertencia: Esta funcionalidad no funciona actualmente como se esperaba en IIS 7.0. Se está abordando para la próxima versión. En IIS 7.0 puede bloquear y desbloquear errores HTTP para sitios concretos o para todo el servidor; pero, actualmente, "lockAllAttributesExcept="errorMode" no funciona para httpErrors. Sin embargo, puede usar las ideas de este artículo sobre cómo desbloquear atributos concretos en otras secciones de configuración de IIS.
Hay casos en los que un proveedor de hospedaje puede necesitar delegar a sus clientes configuraciones específicas en el archivo "applicationhost.config" sin delegar toda la sección, la configuración errorMode en la sección httpErrors es una de ellas, otra es la configuración scriptErrorSentToBrowser en la sección ASP. Para solucionar problemas, es posible que el cliente de un proveedor de hospedaje quiera mostrar Errores detallados en clientes remotos. Para habilitarlo, el proveedor de hospedaje tendría que bloquear todos los atributos excepto errorMode (lockAllAttributesExcept="errorMode") y bloquear el elemento error (lockElements="error"). De este modo, los clientes pueden cambiar errorMode de "detailedLocalOnly" a "Detailed" y obtendrían errores detallados para todos sus errores.
Para delegar la configuración de errorMode:
Permita la delegación de la sección
<httpErrors>
en applicationhost.config mediante overrideModeDefault abriendo%windir%\system32\inetsrv\config\applicationhost.config
con un editor de texto y cambiando el elemento <section name="httpErrors" overrideModeDefault="Deny" /> de la siguiente manera:<section name="httpErrors" overrideModeDefault="Allow" />
Use lockAllAttributesExcept y lockElements para permitir solo la delegación de la configuración de errorMode, localice el elemento
<httpErrors>
y cámbielo de la siguiente manera:<httpErrors lockAllAttributesExcept="errorMode" lockElements="error" >
La sección httpErrors podría tener este aspecto después del cambio:
<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>
Ahora usted, como proveedor de hospedaje, puede usar appcmd para establecer la configuración de errorMode en "Detailed" o "Custom" (consulte el ejemplo siguiente)
%windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:httpErrors -errorMode:Detailed
o puede pedir a sus clientes que pongan las siguientes instrucciones en sus archivos web.config:
<system.webServer> <httpErrors errorMode="Detailed"/> </system.webServer>
Recursos
Para obtener más información, vea: