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, которую я разместил выше.

Другие вопросы по тегам