在什么条件下我们会使用 在每个之前 在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 查询的输出会是啥