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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在什么条件下我们会使用 在每个之前 在web.config中相关的知识,希望对你有一定的参考价值。

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

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

</connectionStrings>

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

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

答案

如果你<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中配置了这样的连接)

另一答案

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

https://webconfigtransformationtester.apphb.com/

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

以上是关于在什么条件下我们会使用 在每个之前 在web.config中的主要内容,如果未能解决你的问题,请参考以下文章

如果我们在没有任何条件的情况下包含两个表,SQL 查询的输出会是啥

BlockingQueue的使用

如果我们在条件变量之前放置一个互斥锁,那么有多少线程会等待它呢?

StringBuider 在什么条件下使用效率更高?

在啥条件下创建 JSESSIONID?

StringBuider 在什么条件下如何使用效率更高?