我处于这样一种情况,我只想更新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。现在我也有serviceuat和servicesqa etcera。我想设置一个转换,只需将' dev '替换为' sta '等,而不是整个块(使用xdt:Transform="Replace"
)
但我该怎么做?
答案 0 :(得分:38)
上面的第一段代码(适用于开发环境)可以转到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 />
元素,您可能也想使用定位器属性。)
我在上面发布的MSDN页面上详细描述了我所说的内容。