我在appsetting.json文件中声明了连接字符串。我想通过web api调用更改连接字符串。
有办法吗?
我正在使用ASP.Net Core。
appsettings.json:
"Database": {
"ProviderName": "MySQL",
"ConnectionString": "server=localhost;database=sampledb;uid=user;pwd=user"
},
Startup.cs
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
//Accessing Database section from appsettings.json
services.Configure<dbSettings>(StaticSettings.GetSection("Database"));
答案 0 :(得分:0)
首先,在开发环境中,存储连接字符串的正确位置是用户秘密。在Visual Studio中,右键单击Project&gt; 管理用户秘密,打开secrets.json。 User Secrets选项仅适用于您的开发人员。机。
如果您的应用程序在Azure上运行,则Azure Portal具有应用程序设置选项,可以为您的应用程序定义连接字符串。
提出问题,您可以在应用程序设置中存储多个连接字符串。例如:
"ConnectionStrings": {
"dev_db": "Server=devSQLServerName;Database=dev;User Id=userName;Password=yourPassword",
"test_db": "Server=testSQLServerName;Database=test;User Id=userName;Password=yourPassword",
"staging_db": "Server=stagingSQLServerName;Database=staging;User Id=userName;Password=yourPassword",
"production_db": "Server=prodSQLServerName;Database=staging;User Id=userName;Password=yourPassword"
}
现在,编写一个方法来根据您的环境获取连接字符串。
public string GetDBConnectionString(string environment)
{
string connectionString = string.Empty;
if (environment == "production")
{
connectionString = Configuration["ConnectionStrings:production_db"];
}
else if (environment == "development")
{
connectionString = Configuration["ConnectionStrings:dev_db"];
}
else if (environment == "test")
{
connectionString = Configuration["ConnectionStrings:test_db"];
}
else if (environment == "stage")
{
connectionString = Configuration["ConnectionStrings:staging_db"];
}
if (connectionString == null)
{
throw new Exception("Could not locate production DB connection string for env: " + environment );
}
else
{
return connectionString;
}
}
现在从Web API的操作方法或您想要使用的位置调用此方法。