IIS7/appcmd - 导入 httpError 配置出现错误

IIS7/appcmd - 导入 httpError 配置出现错误

为了尝试消除为我们的应用程序配置 IIS 时的点击操作,我一直在研究 appcmd。具体来说,它能够导出配置树并以最少的麻烦重新应用它们。

通常,这会给出导出的配置:

appcmd list Config /section:httpProtocol /config /xml > template.xml

然后我可以稍后使用以下命令重新导入:

appcmd set Config /in < template.xml

更改已应用。除了自定义错误页面之外,此方法对其他所有页面都适用。

我已将这些导出为:

appcmd list Config "Default Web Site/intranet" /section:httpErrors /config /xml > customerrors.xml

但是当我尝试导入时:

appcmd set Config /in < customerrors.xml

我收到以下错误:

ERROR ( hresult:8007000d, message:The input contained an error element, which may
indicate that the operation producing the input has failed.  )

嗯,是的,那是因为我正在导入如下所示的错误处理程序条目:

<?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>

...这就是appcmd我得到的结果(这意味着“错误”元素确实是必需的)。这是 appcmd 试图表现得太聪明的例子,还是我忽略了一些非常明显的东西?

干杯!

答案1

真有趣。因此,appcmd 导入似乎将单词“error”视为真正的错误,而不是考虑到这种合法的情况。我会看看能否为您找到有关此问题的更多信息。

至于目前的解决方案,使用 appcmd,找出语法的最佳方法是使用配置编辑器。进行所需的更改,然后转到右侧的“生成脚本”并单击 AppCmd 选项卡。这是获取所需语法的绝佳技巧。

下面是如何处理 httpErrors 的示例:

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

相关内容