IIS7 / appcmd - a importação da configuração httpError dá um erro

1

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!

    
por Chris J 31.08.2011 / 17:05

1 resposta

2

Engraçado. Assim, a importação do appcmd parece observar a palavra "erro" como um erro real, não explicando essa situação legítima. Vou ver se consigo descobrir mais informações sobre isso para você.

Quanto a uma solução nesse meio tempo, com o appcmd, a melhor maneira de descobrir a sintaxe é usar o Editor de configuração. Faça a alteração desejada e, em seguida, vá para "Gerar Script" à direita e clique na guia AppCmd. Esse é um excelente truque para obter a sintaxe de que você precisa.

Veja um exemplo de como fazer o httpErrors:

appcmd.exe set config "Default Web Site" -section:system.webServer/httpErrors /+"[statusCode='503',path='503.htm']"
    
por 01.09.2011 / 16:34