C# I配置保存在vNext中(Asp.Net Mvc 6.0.0-beta4中的Microsoft.Framework.ConfigurationModel)

C# I配置保存在vNext中(Asp.Net Mvc 6.0.0-beta4中的Microsoft.Framework.ConfigurationModel),c#,asp.net,json,asp.net-mvc,C#,Asp.net,Json,Asp.net Mvc,我们正在使用 private Configuration _configuration = new Configuration(); 然后从文件中加载一些参数,例如: SomeConfig= _configuration.Get<string>("SomeConfig"); 它似乎只更改内存中的表示形式,但不会将文件保存回JSON。所以我想知道为什么我应该使用这个配置基础设施,而它不支持我再次序列化配置?也许它应该只用于web.config中较早的内容?你能给我一些关于为什么没

我们正在使用

private Configuration _configuration = new Configuration();
然后从文件中加载一些参数,例如:

 SomeConfig= _configuration.Get<string>("SomeConfig");
它似乎只更改内存中的表示形式,但不会将文件保存回JSON。所以我想知道为什么我应该使用这个配置基础设施,而它不支持我再次序列化配置?也许它应该只用于web.config中较早的内容?你能给我一些关于为什么没有Save方法以及为什么我不应该只实现JSON序列化和反序列化类的细节吗


更新:这个配置文件的用例是:应该使用它来存储数据库的连接字符串。web应用程序应该显示一个设置页面,允许管理员安装web应用程序并在设置页面中定义这些参数。这就是我想在代码中更改它的原因。

似乎不可能做到这一点。新的配置模型只支持读取文件。 我使用JSON newtonsoft对文件进行序列化:

//Initialise newtonsoft classes (Indented for pretty print)
JsonSerializerSettings jsonSettigns = new JsonSerializerSettings();
jsonSettigns.Formatting = Formatting.Indented;
JsonSerializer jsonSerializer = JsonSerializer.Create(jsonSettigns);

//Open normal text writer and give Serialize function the handle
TextWriter textWriter = File.CreateText(FullConfigFilePath);
jsonSerializer.Serialize(textWriter, document);

textWriter.Close();
为了获得文件保存的配置路径,我使用以下代码:

foreach (IConfigurationSource source in _configuration.Sources) {
    if(source is JsonConfigurationSource) {
        jsonSource = (JsonConfigurationSource)source;
        FullConfigFilePath = jsonSource.Path;
    }
}

这似乎不是最佳解决方案。我想我可能根本不应该在这个场景中使用配置模型,或者我应该扩展配置类。

这感觉像是一个不寻常的用例。。。为什么在代码中更改配置而不是编辑文件?(请记住,通常您会有一个复制的服务,因此仅更改本地文件不会有任何帮助-您确实希望更改托管应用程序的所有服务器的配置…然后还有安全方面…)我认为我们必须同意不同意(对于现代web应用程序,执行部署级别配置)。。。看来ASP.NET团队不认为这是必须具备的功能……我不会把它作为一个答案,因为“我不认为你应该尝试这样做”并不真的觉得它回答你的问题。不过,我将删除我的大部分评论。
//Initialise newtonsoft classes (Indented for pretty print)
JsonSerializerSettings jsonSettigns = new JsonSerializerSettings();
jsonSettigns.Formatting = Formatting.Indented;
JsonSerializer jsonSerializer = JsonSerializer.Create(jsonSettigns);

//Open normal text writer and give Serialize function the handle
TextWriter textWriter = File.CreateText(FullConfigFilePath);
jsonSerializer.Serialize(textWriter, document);

textWriter.Close();
foreach (IConfigurationSource source in _configuration.Sources) {
    if(source is JsonConfigurationSource) {
        jsonSource = (JsonConfigurationSource)source;
        FullConfigFilePath = jsonSource.Path;
    }
}