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

时间:2019-03-16 17:34:41

标签: .net-core azure-web-sites

我正在创建.net核心2.1 MVC应用程序。

部署将在Azure上用于Linux的Web APP上完成。

什么是在代码中读取应用程序设置的正确方法,因为在我的appsettings.json中,我无法保留用户名,密码等敏感信息。 另外,我的一些键是层次结构,例如:Rids下的xyz标签,然后是键值。

enter image description here

{
  "ConnectionStrings": 
  {
   "DefaultConnection": "connection key here"
  },

  "abc": 
  {
   "apiKey": "some value",
   "apiSecret": "some value",
   "appName": "some value",
  },
 "xyz": {
      "UserName": "some value",
       "Password": "some value",
      "RIds": {
                "a": "some value",
                "b": "some value",
                "c": "some value"
               },    
      "ClientSecret": "some value"
         }   
 }

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式读取分层配置数据。第一个显示在MSDN Documentation

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

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<T>类在一个类中访问它

public class MyClass
{
    private readonly Xyz _config;

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

        var username = _config.UserName;
    }
}

当您在Azure应用设置中定义设置时,这也适用。要获取层次结构,您需要使用:来识别关系,例如

xyz:UserName
xyz:Password

所有配置信息均可在MSDN

上获得

您可以阅读有关IOptions<T> here

的信息
相关问题