代码之家  ›  专栏  ›  技术社区  ›  General Electric

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

  •  5
  • General Electric  · 技术社区  · 9 年前

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

    现在我只是根据我想要的内容注释连接字符串,我在网上看到了。配置文件有两个依赖项,Web.Debug。config和Web.Release。配置,我想我必须做些什么,但我不知道该做什么。

    这是我的网页。到目前为止的配置文件

    <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
    

    正如你所看到的,我有两个连接字符串,我已经注释掉了,但这样做真的很烦人。

    4 回复  |  直到 9 年前
        1
  •  4
  •   Steve    9 年前

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

        2
  •  3
  •   Bhavik Patel    9 年前

    你可以拆分你的网络。类似于配置

    • web.dev.config
    • web.live.config

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

    如果您不想创建多个web。配置文件参考 Single web.config file across all environments (dev, test, prod) 来自代码项目

        3
  •  1
  •   S1r-Lanzelot    7 年前

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

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

        4
  •  1
  •   Anthony Griggs    6 年前

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

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

    注意,我的功能是 静止的 :

        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;
        }