【问题标题】:Saving values to appsetting.json in .NET Core将值保存到 .NET Core 中的 appsetting.json
【发布时间】:2021-01-19 05:09:30
【问题描述】:

我刚开始使用 .NET Core 和 JSON 作为我的应用设置文件。我可以看到使用以下命令从我的 appsettings.json 文件中检索值非常容易......

IConfigurationRoot _config = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .Build();

// Determine from args the following...
// 1) Transport: FTP (default), WebAPI
// 2) Run as service: True, False (default)
if (!Enum.TryParse<TransportMethods>(_config.GetValue<string>("TransportMethod"), out TransportMethods tMethod))
tMethod = TransportMethods.FTP;

现在我希望应用程序能够将一些“用户设置”保存到同一个 appsettings.json 文件中。将用户设置保存到 appsetting.json 的最佳方式是什么?从我正在阅读的内容来看, IConfigurationRoot 不允许写入,它是只读的。那么还有其他方法可以将我的设置保存到 appsettings.json 吗?

【问题讨论】:

    标签: c# json visual-studio-code appsettings


    【解决方案1】:

    您可以使用自定义配置提供程序

    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#custom-configuration-provider-1

    这将为您提供许多选项,例如将配置存储在数据库或单独的文件中。

    【讨论】:

    • 感谢您的意见!我希望现在避免使用数据库。只需要保存“最后使用的路径”和“缓存的令牌”等内容。当你说“或单独的文件”时,你能给出一个完整的小例子来说明如何做到这一点吗?您引用的页面很大,我不确定我应该寻找什么。
    • 关键是创建一个实现IConfigurationSource的类。该链接显示了一个示例,说明如何根据需要使用 EF。一个快速的谷歌也提出了一些其他方法的例子。只是出于兴趣,您是否尝试过将另一个 .AddJsonFile(... 添加到具有不同路径的构建器?
    • 还没有,但我正在考虑做类似.AddJsonFile("appsettings.local.json", optional: true, reloadOnChange: true) 的事情。我认为这根本不是问题,我认为它会读取两个文件,将它们合并为我一个大的 JSON 设置文件。问题是试图写回它。我认为实体框架只是用于数据库?
    • 你说得对,EF 是用于数据库的。下面是使用带有 XML 配置的 IConfigurationSource 的示例:wildermuth.com/2018/04/15/… 也许这可能是一个更好的解决方案? stackoverflow.com/questions/40970944/…
    • 这实际上是我昨天开始研究的一个 SO 问题。虽然我倾向于 JSON 并试图远离 XML。 “试图进化”或者我猜的……
    猜你喜欢
    • 2017-08-08
    • 2019-03-28
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2022-06-30
    相关资源
    最近更新 更多