Дізнайтеся, як працює appsettings.json

Сторінка оновлюється :
Дата створення сторінки :

Середовищі

Visual Studio
  • Visual Studio 2019
ASP.NET Core
  • 3,0
  • 3,1

На перший

Коли ви створюєте новий проект ASP.NET Core, ви можете створити appsettings. JSON і appsettings. Файл конфігурації розробки. JSON є Входить до складу проекту.

Встановлений тут параметр, встановлений наappsettings. JSON. На момент розвитку, параметри однієї клавіші є appsettings. Використовуються перезаписані параметри в розробленні. JSON.

image

У цій статті я хотів би бачити, як вони перейшли і завантажені.

Редагувати, щоб побачити, як це працює

Спробуйте додати параметри до кожного конфігураційного файлу, щоб побачити, як він працює. Додайте розділ Testobject до кожного з них і додайте параметрtestobject .

Файл 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 で保存しなおすこと。"
  }
}

Appsettings. 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>();

Відображає значення, отримане в індексі. cshtml з боку перегляду.

<p>appsettings.json から取得したテキストを表示</p>
<p>@ViewData["Message"]</p>

Налагодження запустити локально

Створіть проект і налагодження його та спробуйте запустити appsettings. Ви можете побачити, що параметри розробки. JSON відображаються.

image

Розвиток є причиною, чому змінні середовища завантажуються під час запуску програми з ASP.NET Core. Параметр, встановлений для ASPNETCORE_ENVIRONMENT як параметр, є appsettings. XXXX. JSON Тепер завантажується файл конфігурації, який відповідає частині XXXX .

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

image

Якщо ви спробуєте змінити це значення на інше значення та налагодити його, Я думаю, що це підтверджено, що розвиток боку не завантажується і завантажується корінь боку.

image

До речі, цей параметр не відділяється від налагодження або випуску, так що якщо ви відлагодження з випуском, Використовуються параметри розробки. Налагодження та випуск не можна розділити, як у Web. config, але ви можете зареєструвати кілька профілів. Ви можете вжити заходів, таких як перевірка параметрів випуску, перейшовши туди.

Розгортання та запуск у службах IIS

Так що станеться, якщо розгорнути і запустити його в IIS? Спробуйте фактично створення сайту в IIS і розгортання програми.

image

Це налаштування маршруту планується використовувати. Тому, якщо ви розгортаєте програму для служб IIS, вам не потрібно турбуватися про створення параметрів.

image

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

image

У розділі виберіть Aspnetcore в System. веб-сервер.

image

Виберіть Програхохост. config з розташування.

image

Відкрийте колекцію environmentVariables .

image

Додати колекцію.

image

Введіть ASPNETCORE_ENVIRONMENT ім'я та введіть ім'я файлу конфігурації, який потрібно завантажити в значення.

image

Якщо ви перезапустите сайт і переглядаєте веб-екран, ви можете побачити, що завантажується файл конфігурації.

image

Резюме

Якщо початкова конфігурація випадку, appsettings. Якщо параметри розробки. JSON завантажуються та розгортаються у виробничому середовищі, наприклад IIS, Я думаю, що це нормально думати, що appsettings. JSON буде завантажено.

У вас є тільки розвиток під час створення проекту, але можна створити більше одного appsettings, і ви можете змінити частину розвитку будь-яке ім'я. Якщо ви маєте більше одного розташування для виконання, наприклад, можна створити кілька розташувань, а потім настроїти та керувати ASPNETCORE_ENVIRONMENT для вашого середовища.