Вставка нескольких элементов с преобразованиями Web.Config

У меня есть проект С#, который ссылается на множество сервисов WCF. Для локального тестирования я хочу заменить содержимое тегов идентификации, чтобы оно принимало все, что выполняется на локальном хосте.

Следующее преобразование работает, но вставляет элемент dns только в первое подходящее место. Итак, если бы у меня были ссылки на 5 конечных точек, у одной был бы тег dns, а у всех остальных были бы пустые элементы идентификации.

<system.serviceModel>
    <client>
      <endpoint>
        <identity>
          <dns xdt:Transform="Insert" value="localhost"/>
          <userPrincipalName xdt:Transform="RemoveAll" value="someIdentity" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>

Как изменить все совпадающие элементы, а не только первый?


person Zugbo    schedule 09.10.2012    source источник
comment
вы пытаетесь удалить все элементы <userPrincipalName>?   -  person Eric Falsken    schedule 30.03.2013
comment
Да и эта часть работает нормально. Однако я также хочу заменить эти элементы ‹userPrincipalName› на ‹dns›, но мне это не удалось. Я работал над этим, фактически перечисляя все конечные точки вручную, но если есть более элегантное решение, я бы хотел его услышать.   -  person Zugbo    schedule 01.04.2013


Ответы (1)


Используйте атрибут xdt:Locator, чтобы определить выражение XPath для соответствия всем элементам <identity>, в которые вы хотите вставить.

  <system.serviceModel>
    <client>
      <endpoint>
        <identity xdt:Locator="XPath(//identity)">
          <dns xdt:Transform="Insert" value="localhost"/>
          <userPrincipalName xdt:Transform="RemoveAll"/>
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
person Eric Falsken    schedule 01.04.2013
comment
Просмотр исходного кода по адресу xdt.codeplex.com/SourceControl/latest#XmlTransform/ приводит меня к выводу, что в настоящее время это не поддерживается - person David Gardiner; 02.12.2013