20

WCFエンドポイントのURLの一部を更新するだけの状況です。今は、さまざまなconfigsを 'variety'ごとのすべてのエンドポイントに含めることでこれを行います。これは管理が面倒です。私はそうするためにweb.configのトランスフォームをセットアップしたいと思います。部分置換を行うXDTトランスフォームを使用したWeb.config

これらは、ファイルの2つの例

の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" /> 

をステージングしています彼はservicesdea対servicesdevです。今私はまた、サービスとエッセラを持っています。私は、など全体ではなく、ブロック、私はそれをどのように行うか

しかし、(xdt:Transform="Replace"を使用して)単に「STA」と「DEV」を置き換えるために変換設定しますか?

+0

属性全体ではなくURLの部分文字列を置き換えるだけで何が得られるのでしょうか? –

+0

私はrestService、soapなどのブロックをもう少し持っています。他のすべてのファイルの代わりにサービスアドレスを置き換えるために、ただ1つのファイルを更新する必要があります。私たちには5つの環境があるため、置き換えによって管理が容易になります。 – ranieuwe

+2

あなたの投稿が間違っていると思います。私はあなたが本当にただ属性を変更したいときに属性にある種の部分文字列を実行したいと思っていました(少なくとも、正しいとマークした答えから得られたものです)。 –

答えて

37

上記の最初のコードはWeb.config(またはWeb.debug.configですが、xdtの変換も追加する必要があります)に行くことができます。 Web.release.config(これはステージング環境に移動します)で、次の要素を定義します。私はXDTを追加

<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" /> 

注:=トランスフォームリリース設定ファイルにを "置き換え"。この属性を指定すると、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 />いくつかの要素がある場合は、同様の属性 ロケータを使用する場合がありますので注意してください。)

私は上記の投稿MSDNのページに詳細に記載されていると述べた何。

+2

私は、ノード上での置換(xdt:Transform = "Replace")のやり方に精通しています。私は文字列の一部を置き換えたいので、どこでもその再定義はありません。 – ranieuwe

+0

私は自分の答えを更新しました。 – erdinger

+0

ありがとうございました! – ranieuwe

関連する問題