【问题标题】:Can I override a connection string in the web.config for local development?我可以覆盖 web.config 中的连接字符串以进行本地开发吗?
【发布时间】:2013-08-23 01:15:06
【问题描述】:

我有一个 WebForms 项目,它有一个硬编码到 web.config 中的连接字符串(用于调试 - web.Debug.config)。此连接字符串指向用于开发的数据库服务器。

我想运行该数据库的本地副本,这样我的更改不会立即影响其他人。

我一直在做的是进入 web.config 并更新连接字符串以指向我的本地数据库。这可行,但有点乏味,因为我必须记住排除 web.config 并且如果我撤消所有更改必须重新更新它。

正如我所说,由于其他人正在使用此解决方案,我想避免检查任何内容或修改网络配置。

有什么方法可以覆盖 web.config 连接字符串以强制站点指向我的本地数据库而不将任何内容签入源代码控制?

【问题讨论】:

    标签: asp.net .net web-config


    【解决方案1】:

    在本地计算机上创建 SQL ALIAS

    单击开始运行并在本地计算机上键入“cliconfg.exe”。这将帮助您在本地计算机上创建 SQL 别名。在 web.config 上连接到实时数据库,但在您的计算机上创建一个 SQL 别名,该别名将重定向到您的本地数据库。完成此操作后,当您发布程序时,它将自动连接到实时数据库,但是当从本地计算机运行时,它将连接到本地数据库而无需更改任何代码。

    【讨论】:

    • 就我的情况而言,这就是我想要的。这对其他用户来说并不明显,如果你不知道它可能会感到困惑,所以我当然可以看到其他两个的优点,但这适用于任何试图访问 dev sql 服务器的本地项目的事实是完美的对于我的情况。谢谢!
    【解决方案2】:

    您可以做的一件事是为您的连接字符串创建一个单独的文件 - 您根本不会将其签入源代码管理。

    根据您的东西的组织方式,您可能需要从事开发的每个人都做同样的事情,并且根据您的发布/部署方式,这可能不适合您。

    例如:

    Web.config

    <configuration>
      <connectionStrings configSource="connectionstrings.config">
      </connectionStrings>
    </configuration>
    

    connectionstrings.config(不在源代码管理中)

    <connectionStrings>
      <add name="cs" connectionString="server=.;database=whatever;"/>
    </connectionStrings>
    

    每个开发者都可以选择自己本地机器指向哪个数据库,只要connectionstrings.config文件不在源代码管理中(加入忽略列表),就不会有人踩对方的脚。

    【讨论】:

      【解决方案3】:

      一种解决方案是使用配置转换功能。

      VS 2012:

      1. 转到构建->配置管理器
      2. 单击活动解决方案配置列表框并选择“新建”。
      3. 输入本地作为新配置的名称,然后单击保存。
      4. 确保将“配置”列下的值更改回“调试”或 以前是默认的
      5. 右键单击您的 Web.config 文件并选择添加配置转换,这将添加新创建的 web.local.config
      6. 在 web.local.config 中添加本地连接字符串转换,类似于

        <connectionStrings>
            <add name="DbConnection"
                connectionString="...Add Local Connection String..."
                xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
        </connectionStrings>
        

      运行或调试项目时,请确保从绿色运行箭头旁边的列表框中选择本地配置。你只是不检查 web.local.config

      【讨论】:

      • 如果您只是构建/运行,Web.config 转换不起作用,您需要发布(愚蠢的 MS)。 stackoverflow.com/a/14416118/56621
      • 关于配置转换的另一个愚蠢的事情是它们覆盖了主 web.config 文件,所以您必须使用源代码管理来解决这个问题?必须是更好的方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 2019-02-02
      • 2016-03-23
      相关资源
      最近更新 更多