.NET Core存储应用程序设置的方式是什么?

时间:2019-05-18 03:39:10

标签: .net-core settings

我正在开发一个跨平台(win / mac / linux)应用程序,并且希望存储我的应用程序状态。 .NET Core建议的这样做方式是什么?

我已经仔细阅读了文档,发现最接近的东西是this,它是针对Visual Studio / .NET Framework(并且我使用VS Code)的。

3 个答案:

答案 0 :(得分:0)

here所述,您可以使用appsettings.json,它是在dotnet new命令中的新项目模板中生成和引用的。

答案 1 :(得分:0)

有3种方法,

  1. 仅适用于本地主机
  

只需将它们存储在appsettings.json中或作为环境   变量。

对于登台/制作

  1. Azure Key Vault

通过使用 Azure Key Vault 和Microsoft.Extensions.Configuration.AzureKeyVault NuGet软件包,您将能够在实际环境中以最佳方式隐藏项目的配置。

然后您只需将其注入

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .ConfigureAppConfiguration((context, config) =>
 {
     var root = config.Build();
     config.AddAzureKeyVault(
        $”https://{root["KeyVault:Vault"]}.vault.azure.net/",
        root[“KeyVault:ClientId”],
        root[“KeyVault:ClientSecret”]);
 })
 .UseStartup<Startup>();

尽管您仍然必须存储这三个变量,但Azure具有Azure AD来强制仅访问指定的应用程序。因此,您需要在Azure AD下注册一个应用程序才能使其正常工作。还有一些限制性功能可以帮助您进一步将Azure Key Vault沙盒化。

  1. 现有保管库存储

最后但并非最不重要的,最后一种方法是利用现有的保管库存储选项,例如HashiCorp。像https://github.com/rajanadar/VaultSharp这样的库将帮助您快速有效地实施它。如果您主要使用非Azure提供程序作为服务器,则此方法很适合您。

答案 2 :(得分:0)

您可以使用ConfigurationBuilder中的Microsoft.Extensions.Configuration nuget package

尽管这些文档是针对ASP Core的,但您应该能够在常规的.Net Core应用程序中使用它们。

创建settings.json:

{
    "mysetting": "value",
}

并使用它:

var configuration = new ConfigurationBuilder()
    .AddJsonFile("settings.json")
    .Build();

// get the values from the settings.json
var mySetting = configuration["mysetting"];
Console.WriteLine(mySetting);