在数据库上存储连接字符串

时间:2010-08-26 14:57:55

标签: c# .net asp.net database connection-string

我找不到符合此目的的问题,所以我问它。

我们已经部署了一个ASP.NET网站,该网站有两个连接字符串,其中一个可以由用户在运行时配置。问题是,由于我使用.NET Framework来执行此操作,因此在更改web.config时会创建一个临时文件,这会强制我的客户授予整个网站文件夹的完整权限,而不仅仅是Web。配置文件。他对此并不满意,并且经理正在质疑将其他连接字符串存储在同一个配置文件中。

因此,我可以选择在单独的文件夹中创建单独的配置文件,以便它们只应授予该文件夹的完全权限,或将其存储在数据库中。第一个选项与现在大致相同,所以问题是:

如何将ConnectionString存储在数据库上?

请注意,我不是在谈论应用程序ConnectionString,而是另一种选择,因为此应用程序将集成为三个应用程序。

所以,伙计们,给我优点和缺点,将它存储在数据库中的优点和缺点。

4 个答案:

答案 0 :(得分:8)

如果用户正在使用具有自己数据库的应用程序连接到他选择的第二个数据库并且需要能够在运行时更改它,那么是的,将其存储在数据库中。这是某种自助服务托管应用程序吗?

设置文件适用于管理员要更改的内容。当应用程序用户(或应用程序开发人员)而不是系统管理员希望在设置文件中进行更改时,最好将其放在数据库中。

答案 1 :(得分:5)

我不会在数据库中存储连接字符串。

我会改用Settings File(可以在运行时修改设置文件,而不会导致重新编译像web.config这样的应用程序。)

您还可以为不同的范围(用户,应用程序等)提供不同的设置,以便每个用户可以存储自己的配置,如果您不喜欢踩任何其他人的脚趾。

答案 2 :(得分:2)

将其存储在数据库

如果它是关于您的用户的数据的一部分而与此应用程序的设置无关,我会将其存储在数据库中,而不是任何其他地方。它与任何其他用户数据没有什么不同。

<强>优势

  1. 没有存储在公众可以获得的任何地方 - 虽然ASP.net的ISAPI过滤器不允许正常访问它,但你永远不知道下一个弹出的漏洞
  2. 很容易将其与您用户的其他数据联系起来 - 因为它与您网站的用户相关联,这很有用
  3. 无安全问题 - 无需在任何地方设置任何特殊权限

答案 3 :(得分:-1)

您可以在web.config上使用类似的内容

<add name="ConnectionString" connectionString="Data Source={0};Initial Catalog={1};User ID={2};Password={3}" providerName="System.Data.SqlClient" />

然后使用string.Format()设置每个参数的不同值。