Удалить раздел в файле web.config в режиме отладки

У меня есть приложение 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>

Однако в режиме разработки (с локальным веб-сервером или IIS Express) я не хочу использовать SSL. Поэтому я хотел бы иметь возможность использовать преобразования web.config для удаления одного или нескольких правил перезаписи (но не всех)

2 ответа

Если вы хотите удалить весь раздел для вашей конфигурации Dev, используйте

<system.webServer>
   <rewrite xdt:Transform="Remove" >
   </rewrite>
 </system.webServer>

Я решил проблему, используя Remove transform, как показано ниже

<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>
    </rewrite>    
  </system.webServer>
</configuration>

Пожалуйста, напишите ниже код web.Debug и файл конфигурации web.Release. Web.Debug удалит правила перезаписи и web.Release insert rewrite rules.

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>

Вы можете перенести настройки выпуска в файл web.config.release

Другие вопросы по тегам