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>