Как прочитать appsettings.json для приложения MVC .NET Core 2.1, которое будет развернуто в Azure WebApp для Linux - PullRequest
1 голос
/ 16 марта 2019

Я создаю приложение .net core 2.1 MVC.

Развертывание будет выполнено в веб-приложении для Linux в Azure.

Как правильно читать настройки приложения в коде, потому что в моем appsettings.json я не могу хранить конфиденциальную информацию, такую ​​как имя пользователя, пароль и т. Д. Также некоторые из моих ключей имеют иерархическую структуру: тег xyz под этим Rids, а затем значения ключей.

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 Ответ

1 голос
/ 17 марта 2019

Существует несколько способов чтения данных иерархической конфигурации.Первый из них показан в Документации MSDN

. Вы можете читать субключи через массив 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> class

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> здесь

...