0

我尝试<rewrite>在 web.config 中使用并收到HTTP 错误 500.19错误代码 0x8007000d。

转到 IIS 管理器,找到“URL 重写”图标(这意味着该模块已经安装,我不必再次安装它),但点击它给出了一个通用的“执行此操作时出错”错误。

我选择了哪个网站(或服务器本身)并不重要,单击相应的“URL 重写”图标仍然会给出相同的错误消息。

在某些时候,错误消息开始显示附加细节:“无法读取配置部分'system.webServer/rewrite/globalRules',因为它缺少部分声明”,我不记得更改任何内容,所以我不知道是什么导致它出现,所以这只是一个仅供参考。

我搜索并发现了许多有助于最终解决方案的其他帖子,以下是为我解决它的步骤:

4

1 回答 1

0

在您的服务器上:

检查%SystemRoot%\system32\inetsrv\rewrite.dll 是否存在

如果是,请在管理员模式下打开此配置文件: %SystemRoot%\System32\inetsrv\Config\applicationHost.config (对于 64 位 Windows,请确保使用 64 位文本编辑器,否则您将收到“找不到文件”错误`) 并检查您是否有以下“重写”元素(提供的父元素仅供结构参考)

<sectionGroup name="system.webServer">
    <sectionGroup name="rewrite">
    <section name="rules" overrideModeDefault="Allow" />
    <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
    <section name="outboundRules" overrideModeDefault="Allow" />
    <section name="providers" overrideModeDefault="Allow" />
    <section name="rewriteMaps" overrideModeDefault="Allow" />
    <section name="allowedServerVariables" overrideModeDefault="Deny" />
</sectionGroup>



<globalModules>
    <add name="Rewrite" image="%SystemRoot%\System32\inetsrv\rewrite.dll" preCondition="bitness64" />



<location path="" overrideMode="Allow">
    <system.webServer>
        <modules>
            <add name="Rewrite" preCondition="bitness64" />

就我而言,applicationHost.config 中缺少每个相关部分,我必须添加上述所有内容。保存文件,重新启动 IIS(可能没有必要,但我很乐意这样做),再次单击“URL Rewrite”图标,错误就消失了。之后,我用新部分修改了我网站的 web.config,它按预期工作。

于 2020-02-11T20:41:20.690 回答