在发布配置中插入重写规则

时间:2016-02-24 10:51:51

标签: asp.net xslt web-config-transform xdt-transform

您好我想为"重定向到HTTPS"重新插入重写规则。但仅限于我的发布配置

这是重写规则的外观

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Redirect to HTTPS">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    <add input="{URL}" pattern="/$" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

如何仅在我的release.config中实现此目的?

2 个答案:

答案 0 :(得分:5)

只需在需要插入web.config发行版的元素上添加xdt:Transform="Insert"属性。例如,如果您的初始web.config根本不包含<rewrite>元素,则release.config应如下所示:

<system.webServer>
    <rewrite xdt:Transform="Insert">
      <rules>
        <rule name="Redirect to HTTPS">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            <add input="{URL}" pattern="/$" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          </conditions>
          <action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther" />
        </rule>
      </rules>
    </rewrite>
</system.webServer>

否则,如果初始web.config已包含其他一些规则,那么您只需要在xdt:Transform="Insert"元素级别添加<rule>属性:

<system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect to HTTPS" xdt:Transform="Insert">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            <add input="{URL}" pattern="/$" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          </conditions>
          <action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther" />
        </rule>
      </rules>
    </rewrite>
</system.webServer> 

答案 1 :(得分:0)

您可以查看web.config转换: https://msdn.microsoft.com/library/dd465318(v=vs.100).aspx

创建和编码转换文件

  1. 如果您没有构建配置的转换文件 要在解决方案资源管理器中指定设置,请右键单击 单击Web.config文件,然后单击添加配置转换
  2. 打开要使用的构建配置的转换文件。
  3. 编辑转换文件以指定在使用该构建配置进行部署时应对已部署的Web.config文件所做的更改。默认转换文件包含显示如何编码某些常见转换的注释。