c# – 使用XDT转换Web.config进行部分替换

我处于一种情况,我只想更新一个WCF端点的URL的一部分。现在我们通过将不同的配置与“品种”的所有端点相结合来实现。这很麻烦管理。我想在web.config中设置一个转换。

这两个文件的例子

开发

  <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" />

还有更多的这些

分期

  <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" />

不同的是servicessta与servicesdev。现在我也有服务和服务水平。我想设置一个变换,只是用’sta’等替换’dev’而不是整个块(使用xdt:Transform =“Replace”)

但是我该如何做呢?

上面的第一段代码(对于dev环境)可以转到Web.config(或Web.debug.config,但是必须添加xdt变换)。在您的Web.release.config(这将转到登台环境)定义以下元素。

<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" xdt:Transform="Replace" />

请注意,我在发行配置文件中添加了xdt:Transform =“Replace”。使用此属性,端点元素中定义的设置将替换基本Web.config文件中的设置。

有关更多信息,请参阅MSDN

更新:

使用xdt:Transform =“Replace”将替换整个< endpoint />元件。要选择性地替换< endpoint />的地址属性元素使用以下变换。

<endpoint address="http://servicessta.host.com/RPUtilityServices/LogException.svc/restService"
 xdt:Transform="SetAttributes(address)"/>

(请注意,如果有多个< endpoint />元素,您可能也想使用Locator属性。)

我在上面发布的MSDN页面中详细介绍了我所说的内容。

翻译自:https://stackoverflow.com/questions/18151158/web-config-with-xdt-transform-to-do-partial-replace

转载注明原文:c# – 使用XDT转换Web.config进行部分替换