Посмотрите, как работает appsettings.json

Страница обновлена :
Дата создания страницы :

Среды

Визуальная студия
  • Визуальная студия 2019
ASP.NET ядро
  • 3.0
  • 3.1

Сначала

При создании нового проекта ASP.NET Core можно создавать appsettings.json и appsettings. Файл конфигурации development.json Включено в проект.

Здесь установлен параметр, установленный наappsettings.json. На момент разработки параметры одного и того же ключа задатковываются. Используются перезаписанные настройки в Development.json.

image

В этой статье я хотел бы посмотреть, как они переключаются и загружаются.

Отспособите, чтобы увидеть, как это работает

Попробуйте добавить параметры в каждый файл конфигурации, чтобы увидеть, как он работает. Добавьте раздел 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 отображаются.

image

Разработка является причиной загрузки переменных среды при запуске приложения с ASP.NET Core. Параметр, установленный для ASPNETCORE_ENVIRONMENT как параметр appsettings. XXXX.json Файл конфигурации, который соответствует части XXXX, теперь загружается.

Разработка устанавливается при отладке, которая является вкладкой отладки для свойств проекта. Вы можете видеть, что он установлен в переменной среды.

image

Если вы попытаетесь изменить это значение на другое значение и отладить его, Я думаю, что это подтверждается, что сторона разработки не загружается и корневая сторона загружается.

image

Кстати, этот параметр не разделен от отладки или выпуска, так что если отладить с выпуском, Используются параметры разработки. Debug и Release не могут быть разделены, как в web.config, но вы можете зарегистрировать несколько профилей. Вы можете принять меры, такие как проверка настроек выпуска путем переключения там.

Развертывание и запуск в IIS

Так что же произойдет, если вы развернете и запустите его в IIS? Попробуйте создать сайт в IIS и развернуть программу.

image

Это настройка маршрута, которая планируется использовать. Так что если вы развертываете программу в IIS, вам не придется беспокоиться о настройках разработки.

image

Можно загрузить файл конфигурации во время выполнения, если у вас есть какое-либо значение в переменной среды ASPNETCORE_ENVIRONMENT на стороне IIS. Откройте редактор конфигурации из настроек сайта.

image

Из раздела выберите aspNetCore в system.webServer.

image

Выберите ApplicationHost.config из места.

image

Откройте коллекцию environmentVariables.

image

Добавьте коллекцию.

image

Введите ASPNETCORE_ENVIRONMENT в имени, а затем введите имя файла конфигурации, который вы хотите загрузить в значение.

image

При перезагрузке сайта и просмотре веб-экрана можно увидеть, что вы загружаете файл целевой конфигурации.

image

Сводка

Если начальная конфигурация такована, то приложения. Если настройки Development.json загружаются и развертываются в рабочей среде, такой как IIS, Я думаю, что это нормально думать, что appsettings.json будет загружен.

У вас есть разработка только при создании проекта, но вы можете создать несколько приложений, и вы можете изменить часть разработки на любое имя. Например, если у вас есть несколько местоположений выполнения, можно создать несколько местоположений, а затем настроить и эксплуатировать ASPNETCORE_ENVIRONMENT для вашей среды.