26

我的情况是,我只想更新 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。现在我也有 servicesuat 和 servicesqa 等。我想设置一个转换,只用' sta '等代替' dev ',而不是整个块(使用)xdt:Transform="Replace"

但是我该怎么做呢?

4

1 回答 1

39

上面的第一段代码(用于开发环境)可以转到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" 。使用此属性,元素中定义的设置endpoint将替换基本Web.config文件中的设置。

有关详细信息,请参阅MSDN

更新:

使用xdt:Transform="Replace"将替换整个<endpoint />元素。要选择性地替换元素的address属性,请<endpoint />使用以下转换。

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

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

我上面贴的 MSDN 页面上详细描述了我所说的。

于 2013-08-09T16:41:08.020 回答