MagicChunks не записывает атрибут web.config - PullRequest
0 голосов
/ 26 марта 2020

У меня есть этот блок в моем web.config:

<rewrite>
  <rules>
    <rule name="Remove Trailing Slash" stopProcessing="false">
      <match url="(.*)/$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
      </conditions>
      <action type="Rewrite" url="{R:1}" />
    </rule>
    <rule name="Angular UI Router - HTML5 Mode" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{URL}" pattern="/api/" negate="true" />
      </conditions>
      <action type="Rewrite" url="/app/" />
    </rule>
  </rules>
</rewrite>

В конвейере выпуска Azure я использую инструмент MagicChunks для преобразования web.config для изменения вторых action элементов 'url атрибут "/", но он не работает. У меня есть следующее преобразование:

{
  "rewrite/rules/rule/action[@type='Rewrite' and @url='/app/']/@url": "/"
}

Ошибка, которую он выдает:

System.ArgumentException:***There***is***empty***items***in***the***path.

Как я могу нацелить атрибут, который нужно преобразовать, если он не является атрибутом (ами) используется в качестве целевого пути?

1 Ответ

0 голосов
/ 02 апреля 2020

Не уверен, как выглядит ваш web.config, но что-то не так с вашим синтаксисом преобразования. Проверьте документ от этого расширения. Вы должны использовать что-то вроде:

{
  "rewrite/rules/rule[@name='Angular UI Router - HTML5 Mode']/action[@type='Rewrite']/@url": "/"
}

Так как я проверил ваш скрипт таким образом:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
  </system.web>
  <rewrite>
    ...
  </rewrite>
</configuration>

Так что я действительно использовал что-то вроде:

{
  "configuration/rewrite/rules/rule[@name='Angular UI Router - HTML5 Mode']/action[@type='Rewrite']/@url": "/"
}

Be осторожно относитесь к узлу root в вашем файле web.config. Тогда он должен хорошо работать, чтобы заменить атрибут url на "/". Дайте мне знать, если я что-то не так понимаю:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...