自定义部分的Web配置转换

时间:2015-03-07 16:45:27

标签: asp.net asp.net-mvc web-config web.config-transform web-config-transform

我的MVC 5应用程序中有许多不同的Web.config用于不同的环境 - 例如测试/生产

我有适当的网络转换来更改不同环境的值。例如,我在web.config文件中有以下应用程序设置:

<appSettings>
<add key="DevDisplayPanel" value="true" />
</appSettings>

然后在我的Web.Test.config和Web.Prod.config中使用Web转换来更改值,如下所示:

<appSettings>
<add key="DevDisplayPanel" 
     xdt:Transform="Replace" 
     xdt:Locator="Match(key)" 
     value="false" />
<appSettings>

但是在我的Web.config中,我也有自己的自定义部分,它位于<appSettings>部分之外,如下所示:

  <myCustomSection>
    <serverList>
      <add zone="Zone1" url="https://dev-myurl1.com"/>
      <add zone="Zone2" url="https://dev-myurl2.com"/>
      <add zone="Zone2" url="https://dev-myurl3.com"/>
    </serverList>
  </myCustomSection>

我的问题是 - 是否可以进行网络转换,以便Test和Prod看起来如下:

测试:

  <myCustomSection>
    <serverList>
      <add zone="Zone1" url="https://test-myurl1.com"/>
      <add zone="Zone2" url="https://test-myurl2.com"/>
      <add zone="Zone2" url="https://test-myurl3.com"/>
    </serverList>
  </myCustomSection>

PROD:

  <myCustomSection>
    <serverList>
      <add zone="Zone1" url="https://prod-myurl1.com"/>
      <add zone="Zone2" url="https://prod-myurl2.com"/>
      <add zone="Zone2" url="https://prod-myurl3.com"/>
    </serverList>
  </myCustomSection>

1 个答案:

答案 0 :(得分:14)

您可以尝试替换<serverList>代码的内容。

测试:

<myCustomSection>
    <serverList xdt:Transform="Replace">
        <add zone="Zone1" url="https://test-myurl1.com"/>
        <add zone="Zone2" url="https://test-myurl2.com"/>
        <add zone="Zone2" url="https://test-myurl3.com"/>
    </serverList>
</myCustomSection>

PROD:

<myCustomSection>
    <serverList xdt:Transform="Replace">
        <add zone="Zone1" url="https://prod-myurl1.com"/>
        <add zone="Zone2" url="https://prod-myurl2.com"/>
        <add zone="Zone2" url="https://prod-myurl3.com"/>
    </serverList>
</myCustomSection>