我一直在看一下web.config中的一些旧代码,其中在每个<add...>
和<remove...>
之前的大多数组部分下,例如:
<connectionStrings>
<remove name="abcDb" />
<add name="abcDb" connectionString="..." providerName="System.Data.SqlClient" />
</connectionStrings>
如果出于某种奇怪的原因将该部分添加到了计算机配置文件中,仅再次添加相同的部分就不够了吗?
除非我没有技巧,否则为什么我们<remove>
然后<add>
而不是<add>
答案 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
中配置了这种连接)