ASP.NET Core appsettings.json需要在磁盘上更新

时间:2018-04-03 14:18:03

标签: c# json asp.net-core asp.net-core-2.0 appsettings

我目前正在使用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文件。

1 个答案:

答案 0 :(得分:4)

配置在技术上是只读的。换句话说,您不能只更改Configuration对象上的某些内容并将其写入磁盘。它没有这样设置。

如果您需要以编程方式更改 appsettings.json 之类的内容,则需要手动读取文件,进行修改并将其写回磁盘。与任何文件相同。既然它是JSON,你可能想要使用像JSON.NET这样的中介来实际反序列化文件中的JSON,改变内存中的对象,然后在写入文件之前再次序列化它。