Трансформация web.config: Как применить преобразование во все узла, соответствующее выражению локатора?
-
08-10-2019 - |
Вопрос
Я недавно обнаружил автоматическое преобразование Web.config в инструменте веб-развертывания веб-сайта Visual Studio 2010. Он работает хорошо, но у меня есть сценарий, который я не могу работать. Предположим, у меня есть следующие root 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>
Однако это будет удалять только первый матч, в сервисе1, но не следующие. Я пробовал различные способы поиска узла, на узле конечной точки и сервиса, но только первый матч, когда-либо заменит.
Есть ли способ получить все <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
быть удаленным?
Спасибо.
Решение
Я только что попробовал это и использовать Removeall вместо удаления, кажется, делает трюк:
<services>
<service>
<endpoint binding="mexHttpBinding" xdt:Locator="Match(binding)" xdt:Transform="RemoveAll" />
</service>
</services>