Осведомленность приложений ASP. NET Core об их среде выполнения включает переменные среды хоста и местоположения файлов через экземпляр реализации IWebHostEnvironment
. В табл. 29.9 описаны свойства, доступные в этом интерфейсе.
Помимо доступа к важным файловым путям интерфейс IWebHostEnvironment
применяется для выяснения среды времени выполнения.
Выяснение среды времени выполнения
Инфраструктура ASP.NET Core автоматически читает значение переменной среды по имени ASPNETCORE_ENVIRONMENT
, чтобы установить среду времени выполнения. Если переменная ASPNETCORE_ENVIRONMENT
не установлена, тогда ASP.NET Core устанавливает ее значение в Production
(производственная среда). Установленное значение доступно через свойство EnvironmentName
интерфейса IWebHostEnvironment
.
Во время разработки приложений ASP.NET Core переменная ASPNETCORE_ENVIRONMENT
обычно устанавливается с использованием файла настроек или командной строки. Последовательно идущие среды (подготовительная, производственная и т.д.), как правило, задействуют стандартные переменные среды операционной системы.
Вы можете применять для среды любое имя или одно из трех имен, которые предоставляются статическим классом Environments
.
public static class Environments
{
public static readonly string Development = "Development"; // среда разработки
public static readonly string Staging = "Staging"; // подготовительная среда
public static readonly string Production = "Production"; // производственная среда
}
Класс HostEnvironmentEnvExtensions
предлагает расширяющие методы на IHostEnvironment
для работы со свойством имени среды, которые описаны в табл. 29.10.
Ниже перечислены некоторые примеры использования настройки среды:
• выяснение, какие конфигурационные файлы загружать:
• установка параметров отладки, ошибок и ведения журнала:
• загрузка файлов JavaScript и CSS, специфичных для среды.
Вы увидите все это в действии при построении приложений AutoLot.Api
и AutoLot.Mvc
в последующих двух главах.
Конфигурация приложений
В предшествующих версиях ASP.NET для конфигурирования служб и приложений применялся файл web.config
, и разработчики получали доступ к конфигурационным настройкам через класс System.Configuration
. Разумеется, помещение в файл web.config
всех конфигурационных настроек для сайта, а не только специфичных для приложения, делало его (потенциально) запутанной смесью.
В ASP.NET Core была введена значительно более простая система конфигурации. По умолчанию она основывается на простых файлах JSON, которые хранят конфигурационные настройки в виде пар "имя-значение". Стандартный файл для конфигурации называется appsettings.json
. Начальная версия файла appsettings.json
(созданная шаблонами для веб-приложения ASP.NET Core и службы API) просто содержит конфигурационную информацию для регистрации в журнале, а также настройку для ограничения хостов:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
Шаблон также создает файл appsettings.Development.json
. Система конфигурации работает в сочетании с осведомленностью о среде времени выполнения, чтобы загружать дополнительные конфигурационные файлы на основе среды времени выполнения. Цель достигается инструктированием системы конфигурации о необходимости загрузки файла с именем appsettings.{имя_среды}.json
после файла appSettings.json
. В случае запуска приложения в среде разработки после файла начальных настроек загружается файл appsettings.Development.json
. Если запуск происходит в подготовительной среде, тогда загружается файл appsettings.Staging.json
. Важно отметить, что при загрузке более одного файла любые настройки, присутствующие в нескольких файлах, переопределяются настройками из последнего загруженного файла; они не являются аддитивными. Все конфигурационные настройки получаются через экземпляр реализации IConfiguration
, доступный посредством системы внедрения зависимостей ASP.NET Core.
Извлечение настроек