Web.config trasformazione: come applicare una trasformazione di tutti i nodi corrispondenti a un'espressione Locator?
-
08-10-2019 - |
Domanda
Ho recentemente scoperto il web.config trasformazione automatica nello strumento Web Deploy di Visual Studio 2010. Si sta lavorando bene, ma ho uno scenario che non riesco a far funzionare. Assumere Ho la seguente radice 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>
Per il mio Web.Release.config, voglio tutti i nodi endpoint con un legame di mexHttpBinding per essere rimosso.
Ho usato il seguente nel mio Web.Release.config:
<services>
<service>
<endpoint binding="mexHttpBinding" xdt:Locator="Match(binding)" xdt:Transform="Remove" />
</service>
</services>
Tuttavia, questo rimuoverà solo la prima partita, nel Service1, ma non i seguenti. Ho provato vari modi di localizzare il nodo, sul nodo finale e il servizio, ma solo la prima partita ottiene mai sostituito.
C'è un modo per ottenere tutte le <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
da rimuovere?
Grazie.
Soluzione
Ho appena provato questo e utilizzando RemoveAll invece di Remove sembra fare il trucco:
<services>
<service>
<endpoint binding="mexHttpBinding" xdt:Locator="Match(binding)" xdt:Transform="RemoveAll" />
</service>
</services>