连接线和appsettings有什么区别?

时间:2010-06-16 16:37:12

标签: asp.net settings

在我所指的其中一个应用程序中,连接字符串存储在AppSettings中!直到现在我一直在<connectionstring/>元素中存储连接。但是正确的方法是什么?

所以我的问题是,web.config中<connectionstrings><appsettings>之间的区别是什么?是否有任何具体原因我应该或不应该在appsettings中存储连接字符串?是否有任何规则/指南可供遵循?或者这完全是开发人员的选择?

6 个答案:

答案 0 :(得分:11)

connectionStringappSettings之间存在根本区别:

他们寻找不同的东西。在.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更难。

有更多信息about this from this blog post

答案 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时:

  • 连接字符串将自动包含在向导对话框中,以便进一步参数化。
  • 默认情况下,应用程序设置不会出现。如果您真的想这样做,请按照&#34;自定义参数化 - web.config文件中的应用程序设置中的步骤进行操作&#34; Configuring Parameters for Web Package Deployment
  • 的部分

这意味着,在部署时,您最好将环境参数(数据库,缓存,AWS密钥/机密等)放在连接字符串中。它将明确区分dev / staging / prod环境。