发布时将连接字符串从开发更改为生产
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;
}
我想知道如何自动更改我的应用程序的连接字符串,所以当我在我的电脑上使用它时,它使用我的本地 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;
}