Xdt: Transform = "Insert" не работает для <rewrite> в <system.webServer>

У меня есть следующее преобразование, записанное в live config моего web.config.

<system.webServer>
    <rewrite xdt:Transform="Insert">
      <rules>
        <rule name="httpsrewrite">
          <match url=".*" />
          <serverVariables>
            <set name="SERVER_PORT" value="443" />
            <set name="HTTPS" value="on" />
          </serverVariables>
          <action type="None" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

В моем web.config нет элемента.

Преобразование просто не работает. Все мои другие преобразования (замена для elmah и строки подключения) работают нормально.

Ответ 1

Не видя исходных файлов, трудно дать окончательный ответ.

В вашем файле web.config у вас должен быть элемент /configuration/system.webServer, присутствующий для работы преобразования. Если у вас его нет, нет элемента для вставки элемента /configuration/system.webServer/rewrite.

Если это не поможет, разместите хотя бы структуру как вашего web.config, так и файла преобразования. Также я предлагаю вам установить расширение SlowCheetah VS, которое отлично подходит для устранения неполадок/предварительного просмотра.

Ответ 2

Я обнаружил, что xdt: Locator и xdt: Transform по-прежнему работают на <rewrite> хотя Visual Studio все еще генерирует предупреждающие сообщения (атрибут http://schemas.microsoft.com/XML-Document-Transform:Locator 'не объявлен).

<system.webServer>
    <rewrite>
        <rules>
            <clear />
            <rule name="Service Only Request Blocking Rule 1" stopProcessing="true" xdt:Locator="Match(name)" xdt:Transform="Replace">
                <match url=".*" />
                <conditions>
                    <add input="{URL}" pattern="\/address\/search\/.*$" />
                </conditions>
                <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to complete this operation." />
            </rule>
        </rules>
    </rewrite>
</system.webServer>