Jak sprawić, by przepisywanie adresów URL działało z Internetem.Uwolnij.Config transform?

Mam sieć.reguła Config rewrite określona w celu przeniesienia całego ruchu do https. Reguła działa, ale nie chcę SSL wymagane podczas debugowania. Mam mnóstwo sieci.uwolnij.Config transformacje są już zrobione, że praca na publish więc postanowiłem umieścić przepisać tam regułę. Problem polega na tym, że reguła przepisywania nie jest przekształcana jak reszta ustawień. Oto sieć.konfiguracja config:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>

    <rewrite></rewrite>
</system.webServer>

I tu następuje transformacja:

  <system.webServer>
<rewrite>
  <rules>
    <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
      <match url="(.*)"/>
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$"/>
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
    </rule>
  </rules>
</rewrite></system.webServer>

If I just skopiuj regułę przepisywania do sieci.config to działa dobrze. Czy ktoś ma jakieś pomysły dlaczego web.Uwolnij.Config transforms nie działa tylko dla tej sekcji?

Author: Matthew Kruskamp, 2011-08-10

4 answers

Transformacja nastąpi tylko wtedy, gdy umieścisz odpowiednie atrybuty xdt na elementach, które mają zostać przekształcone. Spróbuj dodać atrybut xdt:Transform do konfiguracji wydania:

<system.webServer xdt:Transform="Replace">
    <!-- the rest of your element goes here -->
</system.webServer>

To powie silnikowi transformacji, że cały system.webServer element z Web.config musi zostać zastąpiony przez ten z Web.Release.config.

Silnik transformacji po cichu zignoruje wszystkie elementy, które nie mają atrybutów xdt.

Obowiązkowy link do MSDN.

 44
Author: Lobstrosity,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-10 22:58:10

Innym sposobem byłoby wprowadzenie warunku przepisania, który neguje, jeśli jesteś na localhost:

<conditions>
    <add input="{HTTP_HOST}" pattern="localhost" negate="true"/>
</conditions>
 32
Author: citronas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-21 07:41:53
<system.webServer>
    <rewrite>
        <rules xdt:Transform="Replace">
            <clear />
            <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
              <match url="(.*)" />
              <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTP_HOST}" pattern="localhost(:\d+)?" negate="true" />
                <add input="{HTTP_HOST}" pattern="127\.0\.0\.1(:\d+)?" negate="true" />
                <add input="{HTTPS}" pattern="OFF" />
              </conditions>
              <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
            </rule>
        </rules>          
    </rewrite>
</system.webServer>
 9
Author: Ray Linder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-10 22:02:58

Podsumowując inne odpowiedzi tutaj, odkryliśmy oczywiste: "Replace" zastąpi tylko węzeł, a nie" Insert " go (dzięki DigitalD za właściwą ścieżkę). Reszta naszych plików transformacji używa replace, więc zdecydowaliśmy się na pusty znacznik w naszej podstawowej sieci.config (ten, który zostanie przekształcony).

<system.webServer>
...other tags here that do not get transformed...
<rewrite />
</system.webServer>

Idealnie byłoby "nadpisać", które Wstawiałyby lub zastępowały (lub usuwały i Wstawiały).

 2
Author: BlackjacketMack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-10 20:18:33