8

我有一个 asp.net 应用程序,它必须在 SSL 下运行,并且它在 web.config 中定义了一些重写规则来完成此操作。

<!--file web.config -->
....
</system.webServer>
  <rewrite>
    <rules configSource="webrewrite.config" />
  </rewrite>
</system.webServer>


<!--file web.config -->
<rules>
  ....    
  <rule name="HTTP to HTTPS redirect" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
  </rule>
  ....
</rules>

但是,在开发模式下(使用本地 Web 服务器或 IIS Express)我不想使用 SSL。所以我希望能够使用 web.config 转换来删除一个或多个重写规则(但不是全部)

4

4 回答 4

4

我通过使用移除变换解决了这个问题,如下所示

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  ....
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RulaNameToRemove"
          xdt:Transform="Remove"
          xdt:Locator="Match(name)" >
        </rule>
      </rules>
    </rewrite>    
  </system.webServer>
</configuration>
于 2014-05-03T21:19:21.297 回答
4

如果您想为您的开发配置删除整个部分,请使用

<system.webServer>
   <rewrite xdt:Transform="Remove" >
   </rewrite>
 </system.webServer>
于 2018-04-09T22:24:48.013 回答
0

请写下面的代码 web.Debug 和 web.Release 配置文件。Web.Debug 将删除重写规则和 web.Release 插入重写规则。

Web.Debug.config

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RulaNameToRemove"
          xdt:Transform="Remove"
          xdt:Locator="Match(name)" >
        </rule>
    </rewrite>    
  </system.webServer>
</configuration>

Web.Release.config

<system.webServer>
    <rewrite>
      <rules>
        <clear />
        <rule name="Redirect to https" stopProcessing="true" xdt:Transform="Insert">
          <match url=".*"/>
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true"/>
          </conditions>
          <action type="Redirect" url="https://{SERVER_NAME}" redirectType="Permanent"/>
         
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
于 2020-07-03T10:46:23.813 回答
0

您可以将发布设置移动到 web.config.release 文件

于 2020-02-06T20:25:21.890 回答