I am in a situation where I just want to update a part of a the URL of a WCF endpoint. Right now we do this by including different configs with all the endpoints per 'variety'. This is tedious to manage. I would like to setup a transform in the web.config to do so.
These are two examples of the files
Dev
<endpoint address="http://servicesdev.host.com/RPUtilityServices/LogException.svc/restService"
behaviorConfiguration="restfulBehavior"
binding="webHttpBinding"
contract="Host.RP.Shared.Common.Services.Utility.Interfaces.IExceptionUtilityService"
name="LogService" />
and some more of these
Staging
<endpoint address="http://servicessta.host.com/RPUtilityServices/LogException.svc/restService"
behaviorConfiguration="restfulBehavior"
binding="webHttpBinding"
contract="Host.RP.Shared.Common.Services.Utility.Interfaces.IExceptionUtilityService"
name="LogService" />
The difference is the servicessta versus servicesdev. Now I also have servicesuat and a servicesqa etcera. I would like to setup a transform to just replace the 'dev' with 'sta' etc and not the entire block (using xdt:Transform="Replace"
)
But how do I do that?
The first piece of code above (for dev environment) can go to
Web.config
(orWeb.debug.config
but have to addxdt
transform as well). In yourWeb.release.config
(this one will go to staging environment) define the following element.Note that I added xdt:Transform="Replace" in the release config file. With this attribute present the settings defined within the
endpoint
element will replace those in your baseWeb.config
file.For more information see MSDN.
UPDATE:
Using the
xdt:Transform="Replace"
would replace the entire<endpoint />
element. To selectively replace theaddress
attribute of the<endpoint />
element use the following transform.(Note that if there are several
<endpoint />
elements you might want to use the Locator attribute as well.)What I said is described in detail on the MSDN page I posted above.