Вижте как работи appsettings.json

Страницата се актуализира :
Дата на създаване на страница :

Околната среда

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

На първо място

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

Зададеното тук е параметърътappsettings.json. По време на разработването параметрите на един и същ ключ са настройките на приложенията. Използват се презаписаните настройки в Development.json.

image

В тази статия бих искал да видя как те са разменени и заредени.

Редактиране, за да видите как работи

Опитайте да добавите параметри към всеки конфигурационен файл, за да видите как работи. Добавете раздел TestObject към всеки един и добаветепараметъра TestValue.

Файлът appsettings.json се записва с shift-JIS код на знаците, така че ако искате да включите Запазете го отново в UTF-8.

за да се

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "TestObject": {
    "TestValue": "Root です。",
    "Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
  }
}

настройки на приложението. Д-р Д.К.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "TestObject": {
    "TestValue": "Development です。",
    "Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
  }
}

Получава параметрите на конфигурационния файл в действието index на 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>

Debug се изпълнява локално

Изграждане на проекта и да го отстраните и се опитайте да стартирате настройките на приложението. Можете да видите, че настройките на development.json се показват.

image

Разработката е причината, поради която променливите на средата се зареждат, когато стартирате приложение с ASP.NET Core. Параметърът е ASPNETCORE_ENVIRONMENT като параметър апнастройки. Стомашни Конфигурационен файл, който съответства на XXXX част сега се зарежда.

Разработване се задава при отстраняване на грешки, което е раздела за отстраняване на грешки за свойствата на проекта. Можете да видите, че е зададена в променливата на средата.

image

Ако се опитате да промените тази стойност на различна стойност и да я отстраните, Мисля, че се потвърждава, че страната на развитие не е зареден а коренът е зареден.

image

Между другото, този параметър не е разделен с Debug или Release, така че ако се отстранявате с версия, Използват се параметрите на разработката. Грешки и съобщение не може да бъде разделен, както в web.config, но можете да регистрирате няколко профила. Можете да предприемете действия, като например проверка на настройките за освобождаване, като превключите там.

Разполагане и изпълнение в IIS

И така, какво се случва, ако го разположите и стартирате в IIS? Опитайте да създадете сайт в IIS и да разположите програмата.

image

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

image

Можете да заредите конфигурационния файл по време на изпълнение, ако имате някаква стойност в ASPNETCORE_ENVIRONMENT променливата на iIS страна. Отворете редактора на конфигурация от настройките на сайта.

image

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

image

Изберете ApplicationHost.config от местоположението.

image

Отворете средаVariables колекция.

image

Добавяне на колекция.

image

Въведете ASPNETCORE_ENVIRONMENT в името и след това въведете името на конфигурационния файл, който искате да заредите в стойност.

image

Ако рестартирате сайта и видите Web екрана, можете да видите, че зареждате файла за целева конфигурация.

image

Резюме

Ако първоначалната конфигурация е случаят, настройките на приложението. Ако настройките на Development.json са заредени и разположени в производствена среда, като например IIS, Мисля, че е добре да се мисли, че appsettings.json ще бъде зареден.

Имате разработка само когато създавате проект, но можете да създадете повече от едно приложение и можете да промените частта за разработка на всяко име. Ако имате повече от едно местоположение за изпълнение, например, можете да създадете няколко местоположения, след което да настроите и да работите с ASPNETCORE_ENVIRONMENT за вашата среда.