我目前正在使用asp.net core v2.0进行项目,在我的appsettings.json中我有:
"ContextSettings": {
"ConnectionString": "Data Source={base-path}WahupaWeb.sqlite;Version=3;BinaryGUID=True;datetimeformat=CurrentCulture",
"Provider": "System.Data.SQLite.EF6",
"DropCreateDatabaseAlways": "false"
}
我有一个场景,我需要更新"数据源"连接 字符串编程。
我正在阅读并尝试使用此代码更新JSON文件。
public class FileController : Controller
{
private IConfigurationRoot Configuration { get; set; }
private void ConfigureConnectionString(string dbFileName)
{
var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("appsettings.json", false, reloadOnChange: true);
Configuration = builder.Build();
Configuration["ContextSettings:ConnectionString"] = sqliteConnectionString;
}
}
但它没有更新文件名" appsettings.json"。
如何以编程方式更新appsettings.json文件。
答案 0 :(得分:4)
配置在技术上是只读的。换句话说,您不能只更改Configuration
对象上的某些内容并将其写入磁盘。它没有这样设置。
如果您需要以编程方式更改 appsettings.json 之类的内容,则需要手动读取文件,进行修改并将其写回磁盘。与任何文件相同。既然它是JSON,你可能想要使用像JSON.NET这样的中介来实际反序列化文件中的JSON,改变内存中的对象,然后在写入文件之前再次序列化它。