Em um esforço para tentar tirar o clickyness pontudo da configuração do IIS para o nosso aplicativo, eu estive olhando para o appcmd. Especificamente, é a capacidade de exportar árvores de configuração e reaplicá-las com o mínimo de problemas.
Geralmente, isso fornece a configuração exportada:
appcmd list Config /section:httpProtocol /config /xml > template.xml
que eu posso reimportar em uma data posterior com:
appcmd set Config /in < template.xml
e as alterações são aplicadas. Isso funciona bem para tudo que não seja páginas de erro personalizadas.
Eu os exportei com:
appcmd list Config "Default Web Site/intranet" /section:httpErrors /config /xml > customerrors.xml
mas quando tento importar com:
appcmd set Config /in < customerrors.xml
Eu recebo o seguinte erro:
ERROR ( hresult:8007000d, message:The input contained an error element, which may
indicate that the operation producing the input has failed. )
Bem, sim, isso porque estou importando entradas de errohandler com esta aparência:
<?xml version="1.0" encoding="UTF-8"?>
<appcmd>
<CONFIG CONFIG.SECTION="system.webServer/httpErrors" path="MACHINE/WEBROOT/APPHOST/Default Web Site/intranet" overrideMode="Inherit"
locked="false">
<system.webServer-httpErrors errorMode="Custom">
<error statusCode="500" prefixLanguageFilePath="" path="/intranet/ErrorPages/500-100.asp" responseMode="ExecuteURL" />
<error statusCode="500" subStatusCode="100" path="/intranet/ErrorPages/500-100.asp" responseMode="ExecuteURL" />
</system.webServer-httpErrors>
</CONFIG>
</appcmd>
... que é o que o appcmd
me deu (o que implicaria que o elemento 'erro' é realmente o que é necessário). Este é um caso de appcmd tentando ser muito inteligente, ou estou faltando alguma coisa ridiculamente óbvia?
Felicidades!