在什么条件下我们会使用 在每个之前 在web.config中

问题描述 投票:1回答:2

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

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

</connectionStrings>

如果由于某些奇怪的原因在机器配置文件中添加了该部分,仅仅再次添加相同的部分并且这会被覆盖是不够的?

除非我错过了一个技巧,为什么我们<remove>然后<add>而不仅仅是<add>

asp.net .net web-config
2个回答
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中配置了这样的连接)


1
投票

在部署到多个环境时,您大多使用删除标记。检查此站点,它可以帮助您转换web.config。

https://webconfigtransformationtester.apphb.com/

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

© www.soinside.com 2019 - 2024. All rights reserved.