【问题标题】:Avoid giving server connection string in web.config避免在 web.config 中提供服务器连接字符串
【发布时间】:2014-08-20 16:47:35
【问题描述】:

我正在使用 asp.net MVC 构建一个网站。我在 web.config 中有两个连接字符串,一个用于本地数据库,一个用于服务器数据库。我正在本地测试我的工作,然后将其放在服务器上。服务器连接字符串 (user name and password) 也在 web.config 中。明天当我销售产品时,我想确保我不会将此 web.config 提供给客户。但它可能会发生错误。我怎样才能防止这种情况?

【问题讨论】:

    标签: asp.net sql-server web


    【解决方案1】:

    我的建议是使用以下两种方法之一:

    ConnectionStrings.configWeb.Config transform。像往常一样,两者各有利弊。

    对连接字符串使用单独的配置文件

    • 每个开发人员都可以拥有其连接字符串的本地副本
    • ConnectionStrings 可以被标记为忽​​略并且从不提交到源代码管理

    然而 - 要求每个客户/开发人员单独管理

    Web.config 转换

    • 每个连接字符串/构建配置都可以进行源代码控制
    • 需要发布应用程序而不仅仅是构建

    然而

    • 大量转换可能会变得难以维护。

    我个人更喜欢使用 ConnectionStrings.config - 我不喜欢在源代码管理中使用生产凭据。如果您忘记了构建错误,它还具有很好的副作用,因此您不能错误地将它们遗漏。

    【讨论】:

      【解决方案2】:

      不要在连接字符串中使用用户名和密码,而是使用集成安全性。

      而不是这个。

      User ID=****; Password=****;
      

      使用这个。

      Integrated Security=true;
      

      并确保您的登录用户有权访问本地数据库。并且 IIS 服务器可以访问服务器数据库。

      请参阅here,了解如何配置 IIS 以访问 SQL Server。

      【讨论】:

      • 假设您可以访问 IIS 用户,这是一个不错的解决方案(这将取决于 OP 使用的主机)。如果您可以将数据库命名相同,那就更好了!
      • @Liath,如果web服务器和web数据库在同一台机器上,用Data Source=.; Initial Catalog=DatabaseName; Integrated Security = true;会更容易,我们在服务器上部署时不需要更改它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多