WCFエンドポイントのURLの一部を更新したいだけの状況です。現在、これを行うには、「種類」ごとのすべてのエンドポイントに異なる構成を含めます。これは管理が面倒です。そうするために、web.configで変換をセットアップしたいと思います。
これらはファイルの2つの例です
開発
<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です。現在、servicesatとservicesqa etceraもあります。ブロック全体ではなく、「dev」を「sta」などに置き換えるように変換を設定したい(xdt:Transform="Replace"
を使用)
しかし、どうすればよいですか?
上記の最初のコード(開発環境の場合)は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 [〜#〜] を参照してください。
UPDATE:
xdt:Transform="Replace"
を使用すると、<endpoint />
要素全体が置き換えられます。 <endpoint />
要素のaddress
属性を選択的に置き換えるには、次の変換を使用します。
<endpoint address="http://servicessta.Host.com/RPUtilityServices/LogException.svc/restService"
xdt:Transform="SetAttributes(address)"/>
(<endpoint />
要素が複数ある場合は、Locator属性も使用する必要があることに注意してください。)
私が言ったことは、先に投稿したMSDNページで詳しく説明されています。