在什么情况下,我们将在web.config中的每个<add>之前使用<remove>

时间:2018-09-11 09:18:56

标签: asp.net .net web-config

我一直在看一下web.config中的一些旧代码,其中在每个<add...><remove...>之前的大多数组部分下,例如:

<connectionStrings>
    <remove name="abcDb" />
    <add name="abcDb" connectionString="..." providerName="System.Data.SqlClient" />

</connectionStrings>

如果出于某种奇怪的原因将该部分添加到了计算机配置文件中,仅再次添加相同的部分就不够了吗?

除非我没有技巧,否则为什么我们<remove>然后<add>而不是<add>

2 个答案:

答案 0 :(得分:1)

在部署到多个环境时,通常会使用remove标签。检查此站点,它可以帮助您转换web.config。

https://webconfigtransformationtester.apphb.com/

基本上,它会删除密钥“ abcDb”,并根据您要部署的环境重新添加具有不同值的相同密钥。

答案 1 :(得分:1)

如果您<add ...已经添加到更高级别的配置文件中,则不允许该元素(除非值完全匹配)。

当您尝试访问连接字符串(或导致加载该配置节)时,会出现错误:

  

已经添加了条目“ LocalSqlServer”。

Line 12:   </appSettings>
Line 13:  <connectionStrings>
Line 14:      <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|fruitbat.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
Line 15:  </connectionStrings>
Line 16:   <system.web>

因此,这就是为什么在添加可能已经在其他位置配置的自己的值之前,应该<remove ...(或者,我的偏好是简单的<clear/>)。


(在这里,我在LocalSqlServer上添加了一个web.config连接字符串,尽管事实上在更高版本的框架中默认已经在machine.config中配置了这种连接)