Web.config с XDT-преобразованием для частичной замены
Я нахожусь в ситуации, когда я просто хочу обновить часть URL-адреса конечной точки WCF. Прямо сейчас мы делаем это путем включения различных конфигов со всеми конечными точками для каждого "сорта". Это утомительно управлять. Я хотел бы настроить преобразование в web.config для этого.
Это два примера файлов
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" />
и еще некоторые из них
инсценировка
<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" />
Разница в том, что сервисная служба отличается от сервисной. Теперь у меня также есть servicesuat и servicesqa etcera. Я хотел бы настроить преобразование, чтобы просто заменить 'dev' на 'sta' и т. Д., А не весь блок (используя xdt:Transform="Replace"
)
Но как мне это сделать?
1 ответ
Первый фрагмент кода выше (для среды разработки) можно перейти к 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, которую я разместил выше.