2010-06-16 35 views
8

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

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

+1

如果我没有记错,ASP.NET 1.1不支持web.config中的“connectionStrings”部分,所以连接字符串与appSettings一起结束。你可能会遇到在1.1天内就有根源的应用程序(或者也许是开发者的习惯在2.0+项目中仍然存在)。 – 2010-06-16 17:07:24

回答

10

connectionStringappSettings之间的根本区别:

他们寻找不同的东西。在.NET 2.0及以上版本中:

A 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

0

连接字符串通常保存在<connectionstring/>元素中......并且是一个很好的指导原则,因为它的名称正确。

有时您可能会使用第三方控件或用户控件来查找<appsettings>元素中某个键中的连接字符串。这应该是指南的唯一例外。

4

据我所知,除了在“正确”的位置之外,它并没有产生巨大的差别 - 将连接字符串放在它们自己的部分中的主要优点(您可以对连接字符串进行加密。 )是这样,你可以encrypt that section没有加密你可能想改变的所有设置。

+0

另外,你的服务器人员可以单独加密和修改连接字符串部分,所以当你从dev到qa转移到生产时,获得这个权利是他们的责任,而不是你自己的责任。 – 2010-06-16 16:54:05

0

此外,在IIS7中,可以通过相应的IIS7管理维护连接字符串。

0

关于部署,有他们之间的一个显著差异。当您将Web软件包导入IIS时:

  • 连接字符串将自动包含在向导对话框中以供进一步参数化。
  • 默认情况下,应用程序设置不会在那里。如果你真的想这样做,请按照下列步骤“自定义参数 - 在web.config文件中应用程序设置”的Configuring Parameters for Web Package Deployment

节这意味着,当涉及到部署,你最好把环境连接字符串中的参数(数据库,缓存,AWS密钥/秘密等)。它将显式地提供dev/staging/prod环境之间的区别。