Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подсказка
Это фрагмент из электронной книги для разработчиков ASP NET веб-формы для Azure, Blazor доступных в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.
Основным способом загрузки конфигурации приложения в веб-формах является запись в web.config-файле на сервере или связанном файле конфигурации, на который ссылается web.config. Статический ConfigurationManager
объект можно использовать для взаимодействия с параметрами приложения, строками подключения репозитория данных и другими расширенными поставщиками конфигурации, добавленными в приложение. Обычно взаимодействие с конфигурацией приложения можно увидеть в следующем коде:
var configurationValue = ConfigurationManager.AppSettings["ConfigurationSettingName"];
var connectionString = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionName"].ConnectionString;
При использовании ASP.NET Core, Blazor файл МОЖЕТ присутствовать, если приложение размещено на сервере Windows IIS. Взаимодействие с этой конфигурацией отсутствует ConfigurationManager
, однако вы можете получить более структурированную конфигурацию приложения из других источников. Давайте рассмотрим, как собирается конфигурация и как можно по-прежнему получать доступ к сведениям о конфигурации из файлаweb.config .
Источники конфигурации
ASP.NET Core распознает, что существует множество источников конфигурации, которые можно использовать для приложения. Платформа пытается предложить вам лучшие из этих функций по умолчанию. Конфигурация считывается и агрегируется из этих различных источников по ASP.NET Core. Позже загруженные значения для того же ключа конфигурации имеют приоритет над предыдущими значениями.
ASP.NET Core предназначен для облачной поддержки и упрощения настройки приложений как для операторов, так и для разработчиков. ASP.NET Core распознает среду и знает, работает ли он в вашей Production
или Development
среде. Индикатор среды задается в системной переменной ASPNETCORE_ENVIRONMENT
среды. Если значение не настроено, приложение по умолчанию запускается в Production
среде.
Приложение может запускать и добавлять конфигурацию из нескольких источников в зависимости от имени среды. По умолчанию конфигурация загружается из следующих ресурсов в указанном порядке:
- appsettings.json файл, если он присутствует
- файл appsettings.{ENVIRONMENT_NAME}.json, если он присутствует
- Файл секретов пользователей на диске, если он присутствует
- Переменные среды
- Аргументы командной строки
appsettings.json форматирование и доступ
Файл appsettings.json может быть иерархическим со значениями, структурированными следующим образом:
{
"section0": {
"key0": "value",
"key1": "value"
},
"section1": {
"key0": "value",
"key1": "value"
}
}
При представлении предыдущего JSON система конфигурации сглаживает дочерние значения и ссылается на их полные иерархические пути. Символ двоеточия (:
) отделяет каждое свойство в иерархии. Например, ключ конфигурации section1:key0
получает значение section1
литерала объекта key0
.
Секреты пользователей
Секреты пользователей:
- Значения конфигурации, хранящиеся в JSON-файле на рабочей станции разработчика, за пределами папки разработки приложений.
- Загружается только при выполнении в среде
Development
. - Связанное с определенным приложением.
- Управляется с помощью команды .NET CLI
user-secrets
.
Настройте приложение для хранилища секретов, выполнив user-secrets
команду:
dotnet user-secrets init
Предыдущая команда добавляет UserSecretsId
элемент в файл проекта. Элемент содержит GUID, который используется для связывания секретов с приложением. Затем можно определить секрет с помощью команды set
. Рассмотрим пример.
dotnet user-secrets set "Parent:ApiKey" "12345"
Предыдущая команда делает Parent:ApiKey
ключ конфигурации доступным на рабочей станции разработчика со значением 12345
.
Дополнительные сведения о создании, хранении и управлении секретами пользователей см. в разделе "Безопасное хранение секретов приложений в разработке" в документе ASP.NET Core .
Переменные среды
Следующий набор значений, загруженных в конфигурацию приложения, — это переменные среды системы. Все параметры переменной среды системы теперь доступны через API конфигурации. Иерархические значения раскладываются и разделяются символами двоеточия при чтении внутри приложения. Однако некоторые операционные системы не допускают использования двоеточия в именах переменных среды. ASP.NET Core устраняет это ограничение, преобразуя значения с двойным подчеркиванием (__
) в двоеточие при их доступе. Значение Parent:ApiKey
из приведенного выше раздела секретов пользователя можно переопределить с помощью переменной Parent__ApiKey
среды.
Аргументы командной строки
При запуске приложения можно также указать конфигурацию в качестве аргументов командной строки. Используйте нотацию с двойным тире (--
) или косой чертой/
(), чтобы указать имя заданного значения конфигурации и настроенное значение. Синтаксис похож на следующие команды:
dotnet run CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3
dotnet run --CommandLineKey1 value1 /CommandLineKey2 value2
dotnet run Parent:ApiKey=67890
Возврат номера web.config
Если вы развернули свое приложение в Windows на IIS, файлweb.config по-прежнему настраивает IIS для управления вашим приложением. По умолчанию IIS добавляет ссылку на модуль ASP.NET Core (ANCM). ANCM — это собственный модуль IIS, на котором размещено приложение вместо веб-сервера Kestrel. Этот разделweb.config похож на следующую разметку XML:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApp.exe"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
Конфигурация для конкретного приложения может быть определена путем вложения элемента environmentVariables
внутрь элемента aspNetCore
. Значения, определенные в этом разделе, отображаются в приложении ASP.NET Core в виде переменных среды. Переменные среды загружаются соответствующим образом в этот сегмент запуска приложения.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="Parent:ApiKey" value="67890" />
</environmentVariables>
</aspNetCore>
Прочитать конфигурацию в приложении
ASP.NET Core предоставляет конфигурацию приложения через IConfiguration интерфейс. Этот интерфейс конфигурации должен запрашиваться компонентами Blazor, страницами Blazor и любым другим классом, управляемым ASP.NET Core, которому требуется доступ к конфигурации. Платформа ASP.NET Core автоматически заполняет этот интерфейс разрешенной конфигурацией, настроенной ранее.
Blazor На странице или в разметке Razor компонента можно внедрить объект IConfiguration
с помощью директивы @inject
в начале файла .razor следующим образом:
@inject IConfiguration Configuration
В упомянутом высказывании объект IConfiguration
становится доступным как переменная Configuration
в оставшейся части шаблона Razor.
Отдельные параметры конфигурации можно считывать, указав иерархию параметров конфигурации, запрошенную в качестве параметра индексатора:
var mySetting = Configuration["section1:key0"];
Вы можете получить все разделы конфигурации с помощью метода GetSection, чтобы получить коллекцию ключей в конкретном местоположении с синтаксисом, похожим на GetSection("section1")
, чтобы извлечь конфигурацию для section1 из предыдущего примера.
Строго типизированная конфигурация
С помощью веб-форм можно было создать строго типизированный тип конфигурации, унаследованный от ConfigurationSection типа и связанных типов.
ConfigurationSection
позволял вам настраивать некоторые бизнес-правила и обработку для этих значений конфигурации.
В ASP.NET Core можно указать иерархию классов, которая получит значения конфигурации. Эти классы:
- Не нужно наследовать от родительского класса.
- Необходимо включить свойства
public
, которые соответствуют свойствам и ссылкам на типы для структуры конфигурации, которую вы хотите зафиксировать.
Для предыдущего примераappsettings.json можно определить следующие классы для записи значений:
public class MyConfig
{
public MyConfigSection section0 { get; set;}
public MyConfigSection section1 { get; set;}
}
public class MyConfigSection
{
public string key0 { get; set; }
public string key1 { get; set; }
}
Эту иерархию классов можно заполнить, добавив следующую строку в метод Startup.ConfigureServices
(или в соответствующее место в Program.cs, используя свойство builder.Services
вместо services
).
services.Configure<MyConfig>(Configuration);
В остальной части приложения можно добавить входной параметр в классы или директиву @inject
в шаблоны Razor типа IOptions<MyConfig>
для получения строго типизированных параметров конфигурации. Свойство IOptions<MyConfig>.Value
возвращает MyConfig
значение, заполненное параметрами конфигурации.
@inject IOptions<MyConfig> options
@code {
var MyConfiguration = options.Value;
var theSetting = MyConfiguration.section1.key0;
}
Дополнительные сведения о функции "Параметры" можно найти в шаблоне "Параметры" в документе ASP.NET Core .