Преобразование Web.config: как применить преобразование ко всем узлам, соответствующим выражению локатора? - PullRequest
8 голосов
/ 09 января 2011

Недавно я обнаружил автоматическое преобразование web.config в инструменте веб-развертывания Visual Studio 2010. Он работает хорошо, но у меня есть сценарий, который, похоже, не работает.Предположим, у меня есть следующий корневой Web.config

<services>
  <service name="Service1">
    <endpoint address="" binding="customBinding" bindingConfiguration="LargeBufferBinding"
      contract="Service1" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
  <service name="Service2">
    <endpoint address="" binding="customBinding" bindingConfiguration="LargeBufferBinding"
      contract="Service2" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
  <service name="Service3">
    <endpoint address="" binding="customBinding" bindingConfiguration="LargeBufferBinding"
      contract="Service3" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

Для моего Web.Release.config я хочу, чтобы все узлы конечных точек с привязкой mexHttpBinding были удалены.

В моем Web.Release.config я использовал следующее:

<services>
  <service>
    <endpoint binding="mexHttpBinding" xdt:Locator="Match(binding)" xdt:Transform="Remove" />
  </service>
</services>

Однако это удалит только первое совпадение в Service1, но не следующие.Я пробовал различные способы определения местоположения узла на конечной точке и узле обслуживания, но заменяется только первое совпадение.

Есть ли способ получить все <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />, которые будут удалены?

Спасибо.

1 Ответ

12 голосов
/ 09 февраля 2011

Я только что попробовал это, и использование RemoveAll вместо Remove, похоже, помогает:

<services>
  <service>
    <endpoint binding="mexHttpBinding" xdt:Locator="Match(binding)" xdt:Transform="RemoveAll" />
  </service>
</services>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...