【问题标题】:What is the difference between connectionstrings and appsettings?连接字符串和应用设置有什么区别?
【发布时间】:2010-06-16 16:37:12
【问题描述】:

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

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

【问题讨论】:

  • 如果我没记错的话,ASP.NET 1.1 不支持 web.config 中的“connectionStrings”部分,因此连接字符串与其他所有内容一起出现在 appSettings 中。您可能会遇到扎根于 1.1 天的应用程序,(或者可能是那些习惯停留在 2.0+ 项目中的开发人员)。

标签: asp.net settings


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    据我所知,它并没有太大的区别,除了它在“正确”的位置 - 将连接字符串放在它们自己的部分的主要优势(你确实加密了你的连接字符串..对吗?)这样您就可以encrypt that section 无需加密您可能想要更改的所有设置。

    【讨论】:

    • 此外,您的服务器人员可以单独加密和修改连接字符串部分,因此当您从开发人员转到质量检查人员再到生产人员时,正确处理是他们的责任,而不是您的责任。
    【解决方案3】:

    连接字符串通常保存在&lt;connectionstring/&gt; 元素中...这是一个很好的指南,因为它的命名正确。

    有时您可能会使用第三方控件或用户控件在 &lt;appsettings&gt; 元素的键中查找连接字符串。这应该是该指南的唯一例外。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        您可以使用 appSettings 部分在 .NET 中跨项目共享自定义应用程序配置设置。

        How to share custom application configuration settings across projects in .NET

        【讨论】:

          【解决方案6】:

          在部署方面,它们之间存在一个显着差异。将 Web 包导入 IIS 时:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-10-10
            • 2012-09-28
            • 1970-01-01
            • 2011-03-05
            • 1970-01-01
            • 2011-11-13
            • 1970-01-01
            • 2011-02-26
            相关资源
            最近更新 更多