在我所指的其中一个应用程序中,连接字符串存储在AppSettings中!直到现在我一直在<connectionstring/>
元素中存储连接。但是正确的方法是什么?
所以我的问题是,web.config中<connectionstrings>
和<appsettings>
之间的区别是什么?是否有任何具体原因我应该或不应该在appsettings中存储连接字符串?是否有任何规则/指南可供遵循?或者这完全是开发人员的选择?
答案 0 :(得分:11)
connectionString
和appSettings
之间存在根本区别:
他们寻找不同的东西。在.NET 2.0及更高版本中:
connectionString
对象是具有要设置的特定属性的XML节点;从语义上讲,它指的是数据库连接字符串。
例如,connectionString
如下所示:
<connectionStrings>
<clear/>
<add name="LocalSqlServer"
connectionString="Data Source=(local);Initial Catalog=aspnetdb;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
你会发现它有几个不同的属性:
name
connectionString
:这里面有一个特定的字符串,它需要一个Initial Catalog
,一个安全机制(在这种情况下是Integrated Security
providerName
appSettings
只是一个用户定义的键值对,允许您......嗯...设置应用程序设置。它可以是任何东西:
<appSettings>
<add key="Mom" value="Your"/>
<add key="UseCache" value="True"/>
<add key="MapsKey" value="1234567890-AA"/>
<add key="SMTPServer" value="smtp.peterkellner.net"/>
</appSettings>
在许多情况下,将connectionString放在像appSettings
这样的键值对中(语义和编程)只是奇数。同样会使encrypt the connectionString when you need to更难。
答案 1 :(得分:6)
据我所知,除了处于“正确”的位置之外,它没有产生很大的差异 - 将连接字符串放在自己的部分中的主要优点(你确实加密了你的连接字符串..对吗?)是这样你可以encrypt that section而不加密你可能想要改变的所有设置。
答案 2 :(得分:0)
连接字符串通常保存在<connectionstring/>
元素中...并且是一个很好的准则,因为它的名称是正确的。
有时您可能会使用第三方控件或用户控件来查找<appsettings>
元素中的键中的连接字符串。这应该是指南的唯一例外。
答案 3 :(得分:0)
此外,在IIS7中,可以通过相应的IIS7管理维护连接字符串。
答案 4 :(得分:0)
您可以使用appSettings部分在.NET中跨项目共享自定义应用程序配置设置。
How to share custom application configuration settings across projects in .NET
答案 5 :(得分:0)
关于部署,它们之间存在一个显着差异。将Web包导入IIS时:
这意味着,在部署时,您最好将环境参数(数据库,缓存,AWS密钥/机密等)放在连接字符串中。它将明确区分dev / staging / prod环境。