Search code examples
asp.netweb-config-transformxsltxdt-transform

Is there any way to do a "Replace Or Insert" using web.config transformation?


I'm using web.config transformation as described in the below post in order to generate configs for different environments.

http://vishaljoshi.blogspot.com/2009/03/web-deployment-webconfig-transformation_23.html

I can do a "Replace" transformation by matching on the key, e.g.

<add key="Environment" value="Live" xdt:Transform="Replace" xdt:Locator="Match(key)" />

And I can do "Inserts" e.g.

<add key="UseLivePaymentService" value="true" xdt:Transform="Insert" />

But what I would really find useful is a ReplaceOrInsert transformation, as I can't always rely on the original config file having/not having a certain key.

Is there any way to do this?


Solution

  • I found a cheap workaround. It ain't pretty and won't work very well if you have a lot of elements that needs to be "Replace Or Insert".

    Do a "Remove" and then an "InsertAfter|InsertBefore".

    For example,

    <authorization xdt:Transform="Remove" />
    <authorization xdt:Transform="InsertAfter(/configuration/system.web/authentication)">
      <deny users="?"/>
      <allow users="*"/>
    </authorization>