2015-10-04 11 views
2

Я хочу добавить следующее к веб-конфигурации на выпуске:Web.config трансформирует добавить дереву

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
      <add name="Strict-Transport-Security" value="max-age=16070400; includeSubDomains" xdt:Transform="Insert" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 

Там не все пользовательские заголовки в веб-конфигурации по умолчанию, так что я получаю сообщение об ошибке, когда я публикую: No element in the source document matches '/configuration/system.webServer/httpProtocol/customHeaders'.

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

<httpProtocol> 
    <customHeaders> 
    </customHeaders> 
    </httpProtocol> 

Однако, он не чувствует, как правильного пути.

Есть ли более правильный способ построения дерева элементов в преобразовании?

+0

Попробовали удалить xmlns = attributes? –

ответ

3

Добавление пустого узла <customHeaders> в web.config работает, потому что у вас есть преобразование узла <add .../>, а не узла <customHeaders>. Он может вставлять только туда, где он соответствует этой точке.

Чтобы вставить дерево узлов, переместите xdt:Transform="Insert" немного в XML. Если вы начинаете с web.config из:

<?xml version="1.0"> 
<configuration> 
    <system.webServer> 
    <httpProtocol /> 
    </system.webServer> 
</configuration> 

и трансформировать его:

<?xml version="1.0"> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders xdt:Transform="Insert"> 
     <add name="Strict-Transport-Security" value="max-age=16070400; includeSubDomains" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 

Вы будете в конечном итоге с:

<?xml version="1.0"> 
<configuration> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="Strict-Transport-Security" value="max-age=16070400; includeSubDomains" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 

Вот полезный web.config transformation tester.

 Смежные вопросы

  • Нет связанных вопросов^_^