asp.net-core                
            конфигурация
        
        
            
    Поиск…
Вступление
Ядро Asp.net обеспечивает конфигурирование абстракций. Они позволяют загружать настройки конфигурации из разных источников и создавать окончательную конфигурационную модель, которая затем может быть использована вашим приложением.
Синтаксис
-  IConfiguration
-  string this[string key] { get; set; }
-  IEnumerable<IConfigurationSection> GetChildren();
-  IConfigurationSection GetSection(string key);
Доступ к конфигурации с использованием инъекции зависимостей
 Рекомендуемый подход заключается в том, чтобы избежать этого и скорее использовать IOptions<TOptions> и IServiceCollection.Configure<TOptions> . 
 Тем не менее, это довольно просто сделать доступным приложение IConfigurationRoot . 
В конструкторе Startup.cs у вас должен быть следующий код для создания конфигурации,
 Configuration = builder.Build();
 Здесь Configuration является экземпляром IConfigurationRoot и добавляет этот экземпляр в качестве Singleton в коллекцию службы в методе ConfigureServices, Startup.cs, 
 public void ConfigureServices(IServiceCollection services)
 {
    services.AddSingleton<IConfigurationRoot>(provider => Configuration);
Например, теперь вы можете получить доступ к конфигурации в контроллере / службе
  public MyController(IConfigurationRoot config){
      var setting1= config.GetValue<string>("Setting1")
  }
Начиная
В этом примере мы опишем, что произойдет, если вы поднимете новый проект.
 Во-первых, к вам будут добавлены следующие зависимости (в настоящее время файл project.json ): 
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
 Он также создаст конструктор в вашем файле Startup.cs который будет отвечать за построение конфигурации с помощью ConfigurationBuilder свободного api: 
-  Сначала создается новый ConfigurationBuilder.
- Затем он устанавливает базовый путь, который будет использоваться для вычисления абсолютного пути дальнейших файлов
-  Он добавляет необязательный appsettings.jsonв конструктор конфигурации и отслеживает его изменения.
-  Он добавляет дополнительный конфигурационный файл appsettings.environementName.jsonсвязанный сappsettings.environementName.json
- Затем он добавляет переменные environement.
public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}
 Если один и тот же параметр установлен в нескольких источниках, последний добавленный источник будет выигран, и его значение будет выбрано.
 Конфигурация затем может быть использована с использованием свойства indexer. Символ двоеточия : символ служит разделителем пути. 
Configuration["AzureLogger:ConnectionString"]
 Это будет искать значение конфигурации ConnectionString в разделе AzureLogger . 
Работа с переменными среды
 Вы можете настроить конфигурацию из переменных среды, вызвав .AddEnvironmentVariables() на вас ConfigurationBuilder . 
 Он будет загружать переменные среды с префиксом APPSETTING_ Затем он будет использовать двоеточие : в качестве разделителя пути ключа. 
Это означает, что: после настроек environement:
APPSETTING_Security:Authentication:UserName = a_user_name
APPSETTING_Security:Authentication:Password = a_user_password
Будет эквивалент этого json:
{
    "Security" : {
       "Authentication" : {
           "UserName" : "a_user_name",
           "Password" : "a_user_password" 
        } 
    }
}
** Обратите внимание, что Azure Service будет передавать настройки в качестве переменных среды. Префикс будет установлен для вас прозрачно. Итак, чтобы сделать то же самое в Azure, просто установите два параметра Application Settings в клике AppSettings:
Security:Authentication:UserName         a_user_name
Security:Authentication:Password         a_user_password
Опционная модель и конфигурация
При работе с большими конфигурационными наборами стоимости может оказаться довольно неудобным загрузить их на одну покупку.
 Опционная модель, которая поставляется с asp.net, предлагает удобный способ сопоставления section с dotnet poco : например, можно было бы гидратировать StorageOptions непосредственно из раздела конфигурации b, добавляя пакет Microsoft.Extensions.Options.ConfigurationExtensions и вызывающий Configure<TOptions>(IConfiguration config) . 
services.Configure<StorageOptions>(Configuration.GetSection("Storage"));
В источнике конфигурации памяти
 Вы также можете настроить источник из объекта памяти, например Dictionary<string,string> 
.AddInMemoryCollection(new Dictionary<string, string>
{
    ["akey"] = "a value"
})
Это может показаться полезным в сценариях интеграции / модульного тестирования.