Chris Haines Chris Haines - 1 month ago 13
ASP.NET (C#) Question

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?

Answer

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>