Посмотрите, как работает appsettings.json
Среды
- Визуальная студия
-
- Визуальная студия 2019
- ASP.NET ядро
-
- 3.0
- 3.1
Сначала
При создании нового проекта ASP.NET Core можно создавать appsettings.json и appsettings. Файл конфигурации development.json Включено в проект.
Здесь установлен параметр, установленный наappsettings.json. На момент разработки параметры одного и того же ключа задатковываются. Используются перезаписанные настройки в Development.json.
В этой статье я хотел бы посмотреть, как они переключаются и загружаются.
Отспособите, чтобы увидеть, как это работает
Попробуйте добавить параметры в каждый файл конфигурации, чтобы увидеть, как он работает. Добавьте раздел TestObject к каждому из них и добавьте параметрTestValue.
Файл appsettings.json написан с кодом символов shift-JIS, так что если вы хотите включить японский, Сохранить его снова в UTF-8.
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"TestObject": {
"TestValue": "Root です。",
"Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
}
}
Приложения. Development.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"TestObject": {
"TestValue": "Development です。",
"Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
}
}
Получает параметры файла конфигурации в действии индекса HomeController.cs. Существует метод получения путем указания класса, но я люблю его, потому что это не этот предмет.
private readonly ILogger<HomeController> _logger;
private readonly IConfiguration _configuration;
// DI で IConfiguration を受け取る
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
}
public IActionResult Index()
{
// appsettings.json から値を取得します。
// 階層化されている場合は GetSection を使用します。
ViewData["Message"] = _configuration.GetSection("TestObject").GetValue<string>("TestValue");
return View();
}
При создании, связывании и загрузке класса вы найдете код, похожий на следующий:
// クラス定義 public class TestObject { public string TestValue { get; set; } public string Comment { get; set; } } // 読み込み var testObject = _configuration.GetSection(nameof(TestObject)).Get<TestObject>();
Отображает значение, полученное в Index.cshtml на стороне вида.
<p>appsettings.json から取得したテキストを表示</p>
<p>@ViewData["Message"]</p>
Ошибка запускать локально
Создайте проект и отладите его и попробуйте запустить appsettings. Вы можете видеть, что настройки development.json отображаются.
Разработка является причиной загрузки переменных среды при запуске приложения с ASP.NET Core. Параметр, установленный для ASPNETCORE_ENVIRONMENT как параметр appsettings. XXXX.json Файл конфигурации, который соответствует части XXXX, теперь загружается.
Разработка устанавливается при отладке, которая является вкладкой отладки для свойств проекта. Вы можете видеть, что он установлен в переменной среды.
Если вы попытаетесь изменить это значение на другое значение и отладить его, Я думаю, что это подтверждается, что сторона разработки не загружается и корневая сторона загружается.
Кстати, этот параметр не разделен от отладки или выпуска, так что если отладить с выпуском, Используются параметры разработки. Debug и Release не могут быть разделены, как в web.config, но вы можете зарегистрировать несколько профилей. Вы можете принять меры, такие как проверка настроек выпуска путем переключения там.
Развертывание и запуск в IIS
Так что же произойдет, если вы развернете и запустите его в IIS? Попробуйте создать сайт в IIS и развернуть программу.
Это настройка маршрута, которая планируется использовать. Так что если вы развертываете программу в IIS, вам не придется беспокоиться о настройках разработки.
Можно загрузить файл конфигурации во время выполнения, если у вас есть какое-либо значение в переменной среды ASPNETCORE_ENVIRONMENT на стороне IIS. Откройте редактор конфигурации из настроек сайта.
Из раздела выберите aspNetCore в system.webServer.
Выберите ApplicationHost.config из места.
Откройте коллекцию environmentVariables.
Добавьте коллекцию.
Введите ASPNETCORE_ENVIRONMENT в имени, а затем введите имя файла конфигурации, который вы хотите загрузить в значение.
При перезагрузке сайта и просмотре веб-экрана можно увидеть, что вы загружаете файл целевой конфигурации.
Сводка
Если начальная конфигурация такована, то приложения. Если настройки Development.json загружаются и развертываются в рабочей среде, такой как IIS, Я думаю, что это нормально думать, что appsettings.json будет загружен.
У вас есть разработка только при создании проекта, но вы можете создать несколько приложений, и вы можете изменить часть разработки на любое имя. Например, если у вас есть несколько местоположений выполнения, можно создать несколько местоположений, а затем настроить и эксплуатировать ASPNETCORE_ENVIRONMENT для вашей среды.