将重写规则添加到 web.config 会导致 IIS 控制台中的错误

Posted

技术标签:

【中文标题】将重写规则添加到 web.config 会导致 IIS 控制台中的错误【英文标题】:Adding Rewrite rule to web.config causes error in IIS console 【发布时间】:2015-02-16 14:13:29 【问题描述】:

您好,我添加了一个 http 到 https 重定向到我的 web.config

<rewrite>
      <rules>
        <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
        <match url="(.*)" />
        <conditions logicalGrouping="MatchAny">
          <add input="HTTPS" pattern="off" ignoreCase="true" />
        </conditions>
        <action type="Redirect" url="https://HTTP_HOST/" redirectType="Found" />
        </rule>
      </rules>
    </rewrite>

它在所要求的范围内,实际上它与我在另一个盒子上运行的另一个 iis 完全相同。

但是,当我在这台服务器上保存配置然后检查 IIS 控制面板时,我得到了一个

“执行此操作时出错...详细信息:文件名\?D:\site\web.config 错误:

并且没有错误。当我从配置中删除重写时,一切都很好。

此服务器设置与有效设置之间的唯一区别是损坏的服务器网站不在根目录中,或者它是默认网站。

以前有没有人遇到过这种类型的错误?

谢谢 乔恩

【问题讨论】:

【参考方案1】:

很奇怪,即使我在 IIS 中设置了所有内容,并且在添加/删除角色以包含 http 重定向期间,它仍然需要添加此扩展

http://www.microsoft.com/web/gallery/install.aspx?appid=urlrewrite2

urlrewrite。我安装了那个扩展,一切都开始工作了。遗憾的是错误消息无法告诉我我缺少该功能。

【讨论】:

它无法告诉您缺少功能。如果没有安装该功能,它只知道您的 web.config 文件中有无效标签。 我发现这个错误非常无用 - 如果它指出哪些标签无效会更有帮助。它甚至没有给出准确的行号(表示-1)。空的“配置错误”也是不幸的。

以上是关于将重写规则添加到 web.config 会导致 IIS 控制台中的错误的主要内容,如果未能解决你的问题,请参考以下文章

web.config 中的 IIS 重写规则将 HTTPS 请求重定向到 HTTP

如何使 URL 重写与 web.Release.config 转换一起工作?

如何返回任何未指向IIS web.config中任何文件的Web请求的特定页面?

web.config 重写规则在 blob 存储中的 Azure 静态网站中不起作用

web.config将2个规则合并为1

从代码 C# 更改 Web.Config 中的 URL 重写规则