.net core 如何读取要部署在Azure WebApp for Linux上的.net core 2.1 mvc应用程序的appsettings.json

.net core 如何读取要部署在Azure WebApp for Linux上的.net core 2.1 mvc应用程序的appsettings.json,.net-core,azure-web-app-service,.net Core,Azure Web App Service,我正在创建.net core 2.1 MVC应用程序 部署将在Azure上Linux的Web应用程序上完成 在代码中读取应用程序设置的正确方法是什么,因为在我的appsettings.json中,我不能保存用户名、密码等敏感信息。。 另外,我的一些键是分层的,比如:xyz标记,在RID下,然后是键值 有几种方法可以读取分层配置数据。第一个显示在 您可以通过配置数组读取子键,如下所示: Config["xyz:UserName"] Config["xyq:RIds:a"] 另一种选择是创建一个

我正在创建.net core 2.1 MVC应用程序

部署将在Azure上Linux的Web应用程序上完成

在代码中读取应用程序设置的正确方法是什么,因为在我的appsettings.json中,我不能保存用户名、密码等敏感信息。。 另外,我的一些键是分层的,比如:xyz标记,在RID下,然后是键值


有几种方法可以读取分层配置数据。第一个显示在

您可以通过配置数组读取子键,如下所示:

Config["xyz:UserName"]
Config["xyq:RIds:a"]
另一种选择是创建一个类,该类表示您尝试加载的数据:

public class Xyz
{
    public string UserName { get; set; }
    public string Password { get; set; }

    public RIds RIds { get; set; }
}

public class RIds
{
    public string a { get; set; }
    public string b { get; set; }
    public string c { get; set; }
}
startup.cs
中,您可以将配置加载到类中,并将其注入任何其他需要配置的类中:

public Configure(IServiceCollection services)
{
    ...
    services.AddConfiguration<Xyz>(Configuration.GetSection("xyz"));
}
所有配置信息都可以在


您可以阅读关于
IOptions

的内容,因为我的部署是在linux上,所以我设法读取了密钥,并使用下面的代码“services.AddSingleton(Configuration);”读取密钥,比如“apiKey”在startup.cs和'IConfiguration config'中,将其作为构造函数中的参数,'config[“apiKey”];'读取密钥。但是,我仍然无法在Linux上读取xyz__用户名?:在windows部署中工作,而不是在Linux上。我的是Linux,将:替换为_u(双下划线)。这应该适用于所有平台:不适用于linux,也不适用于windows
public Configure(IServiceCollection services)
{
    ...
    services.AddConfiguration<Xyz>(Configuration.GetSection("xyz"));
}
public class MyClass
{
    private readonly Xyz _config;

    public MyClass(IOptions<Xyz> options)
    {
        _config = options.Value;

        var username = _config.UserName;
    }
}
xyz:UserName
xyz:Password