2016-03-21 53 views
0

的Web.config原Web配置變換的behaviorConfiguration屬性不工作

<service behaviorConfiguration="Test.DevelopmentPc.Environment.Behavior" name="Tks.Licensing.Service.ActivationServer"> 
    <endpoint address="" name="httpEndpoint" binding="basicHttpBinding" bindingConfiguration="testBasicHttpBinding" contract="Tks.Licensing.Contracts.ServiceContract.IActivationService"/> 
    <endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint" contract="IMetadataExchange"/> 
    </service> 

我希望它是什麼

<service behaviorConfiguration="__BehaviorConfiguration__" name="Tks.Licensing.Service.ActivationServer"> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="secureWsHttpBinding" name="httpEndpoint" contract="Tks.Licensing.Contracts.ServiceContract.IActivationService"> 
    <identity> 
     <dns value="__ServerIdentity__"/> 
    </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint" contract="IMetadataExchange" /> 
</service> 

這是我已經試過:

<service behaviorConfiguration="__BehaviorConfiguration__" name="Tks.Licensing.Service.ActivationServer" xdt:Transform="SetAttributes(behaviorConfiguration)" xdt:Locator="Match(name)"> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="secureWsHttpBinding" name="httpEndpoint" contract="Tks.Licensing.Contracts.ServiceContract.IActivationService"> 
    <identity xdt:Trasform="Insert"> 
     <dns value="__ServerIdentity__"/> 
    </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint" contract="IMetadataExchange" /> 
</service> 

的原來的web配置根本沒有改變。

原始Web cofig中有幾個服務塊,其名稱不同。 我不允許對原始配置文件進行任何更改。有沒有辦法做到這一點,而不接觸原始文件?

+0

您是使用版本管理服務器還是基於Web的新版本管理? –

+0

另外,你是否用適當的MSBuild標誌建立你的應用程序來調用配置轉換? –

+0

我正在使用發佈管理服務器,但我不認爲RM是一個問題。我在我的文件中有其他配置轉換,他們都按預期工作。只有這一個不工作。 –

回答

0

我通過替換整個「服務」元素來解決問題。

<services xdt:Transform="Replace"> 
<service behaviorConfiguration="__BehaviorConfiguration__" name="Tks.Licensing.Service.ActivationServer"> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="secureWsHttpBinding" name="httpEndpoint" contract="Tks.Licensing.Contracts.ServiceContract.IActivationService"> 
    <identity> 
     <dns value="__ServerIdentity__"/> 
    </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint" contract="IMetadataExchange" /> 
</service></services>