发布时将连接字符串从开发更改为生产

Change connection string from development to production when publishing

我想知道如何自动更改我的应用程序的连接字符串,所以当我在我的电脑上使用它时,它使用我的本地 SQL 服务器,一旦我发布它然后使用 SQL 我在 azure 上托管的服务器。

现在我只是根据需要注释掉连接字符串,我看到 Web.Config 文件有 2 个依赖项,Web.Debug.config 和 Web.Release.config我想我必须做点什么,但我不知道该做什么。

这是我目前的 web.config 文件

<connectionStrings>
    <add name="MyApp" connectionString="Data Source=mydb.database.windows.net;Initial Catalog=MyDb;User ID=MyUser@mydb.database.windows.net;Password=MyPwd;Encrypt=true;Trusted_Connection=false;" providerName="System.Data.SqlClient" />
  <!--<add name="MyApp" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS;Database=MyDb;Integrated Security=True;" />-->
  </connectionStrings

如您所见,我已经注释掉了 2 个连接字符串,但这样做真的很烦人。

这两个配置是针对各自的构建设置构建的,因此您可以将开发连接字符串放在 Web.Debug.config 中,将生产连接字符串放在 Web.Release.config 中。然后,当您部署到生产环境时,运行 发布版本和生成的 Web.Config 将具有生产连接字符串。

你可以像

一样拆分你的 web.config
  • web.dev.config
  • web.live.config

在部署时选择适当的配置文件。 您可以访问此 link 以了解 how to manage multiple web.config file in single project.

如果您不想创建多个 web.config 文件,请参考来自 codeproject

Single web.config file across all environments (dev, test, prod)

您现在可以使用 Azure 通过应用设置中的连接字符串来处理这个确切的问题。您只需要将连接命名为完全相同,然后它就会即插即用。

https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-configure

我决定绕过整个 web.config,而是集成一个函数,该函数根据 运行 来自的当前机器确定连接字符串。要设置它,我必须设置我的 ApplicationDbContext() 以从函数中收集连接字符串,如下所示:

public ApplicationDbContext() : base(CFFunctions.GetCFConnection())
{
}

注意我的函数是Static:

    public static string GetCFConnection()
    {
        string Connection = "";

        string Machine = System.Environment.MachineName.ToLower();

        switch(Machine)
        {
            case "development":
                Connection = @"Data Source=DEV_SRV;Initial Catalog=CeaseFire;Integrated Security=True"; 
                break;
            case "production":
                Connection = @"Data Source=PRO_SRV;Initial Catalog=CeaseFire;Integrated Security=True";
                break;
        }

        return Connection;
    }