Podívejte se, jak appsettings.json funguje

Stránky aktualizovány :
Datum vytvoření stránky :

Prostředí

Visual Studio
  • Visual Studio 2019
ASP.NET jádro
  • 3.0
  • 3.1

Zpočátku

Při vytváření nového ASP.NET projektu Core můžete vytvořit appsettings.json a nastavení aplikací. Konfigurační soubor development.json je Zahrnuto do projektu.

Co je zde nastaveno, je parametr nastaven naappsettings.json. V době vývoje jsou parametry stejného klíče nastavení aplikací. Přepsané nastavení v Souboru Development.json se používá.

image

V tomto článku bych chtěl vidět, jak jsou přepnuty a načteny.

Upravit, abyste viděli, jak to funguje

Zkuste přidat parametry do každého konfiguračního souboru, abyste zjistili, jak funguje. Přidejte do každého oddílu TestObject a přidejte parametrTestValue.

Soubor appsettings.json je napsán s kódem znaků shift-JIS, takže pokud chcete zahrnout japonštinu, Uložte jej znovu v 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 で保存しなおすこと。"
  }
}

Získá parametry konfiguračního souboru v akci Index HomeController.cs. Tam je způsob, jak získat tím, že specifikuje třídy, ale já jsem rád, že proto, že to není toto téma.

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();
}

Pokud vytvoříte, svážete a načtete třídu, najdete kód podobný následujícímu:

// クラス定義
public class TestObject
{
  public string TestValue { get; set; }
  public string Comment { get; set; }
}

// 読み込み
var testObject = _configuration.GetSection(nameof(TestObject)).Get<TestObject>();

Zobrazí hodnotu získanou v souboru Index.cshtml na straně zobrazení.

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

Ladění spustit místně

Sestavení projektu a ladění a pokuste se spustit nastavení aplikace. Můžete vidět, že jsou zobrazeny nastavení development.json.

image

Vývoj je důvod, proč proměnné prostředí jsou načteny při spuštění aplikace s ASP.NET Core. Parametr nastavený na ASPNETCORE_ENVIRONMENT jako parametr je appsettings. XXXX.json Konfigurační soubor, který odpovídá části XXXX je nyní načten.

Develop je nastavena při ladění, což je karta ladění pro vlastnosti projektu. Můžete vidět, že je nastavena v proměnné prostředí.

image

Pokud se pokusíte změnit tuto hodnotu na jinou hodnotu a ladit ji, Myslím, že je potvrzeno, že vývojová strana není načtena a kořenová strana je načtena.

image

Mimochodem, tento parametr není oddělen laděnínebo vydání, takže pokud ladění s release, Používají se vývojové parametry. Ladění a vydání nelze oddělit, jako v web.config, ale můžete zaregistrovat více profilů. Můžete provést akci, například zkontrolovat nastavení vydání přepnutím tam.

Nasazení a spuštění ve službách IIS

Co se tedy stane, když ji nasadíte a spustíte ve službách IIS? Zkuste skutečně vytvořit web ve službách IIS a nasadit program.

image

Toto je nastavení trasy, které má být použito. Pokud tedy nasazujete program do služby IIS, nemusíte se starat o nastavení vývoje.

image

Pokud máte nějakou hodnotu v proměnné prostředí ASPNETCORE_ENVIRONMENT na straně služby IIS, můžete konfigurační soubor načíst za běhu. Otevřete konfigurační editor z nastavení webu.

image

V části vyberte aspNetCore v system.webServer.

image

V umístění vyberte ApplicationHost.config.

image

Otevřete kolekci environmentVariables.

image

Přidejte kolekci.

image

Zadejte název ASPNETCORE_ENVIRONMENT a zadejte název konfiguračního souboru, který chcete načíst do hodnoty.

image

Pokud web restartujete a zobrazíte webovou obrazovku, uvidíte, že načítáte cílový konfigurační soubor.

image

Shrnutí

Pokud je počáteční konfigurace případ, nastavení aplikace. Pokud jsou nastavení Development.json načtena a nasazena v produkčním prostředí, jako je například služby IIS, Myslím, že je v pořádku si myslet, že appsettings.json bude načten.

Vývoj máte jenom při vytváření projektu, ale můžete vytvořit více než jedno nastavení aplikace a můžete změnit vývoj část libovolný název. Pokud máte více než jedno umístění spuštění, například můžete vytvořit více umístění a potom nastavit a provozovat ASPNETCORE_ENVIRONMENT pro vaše prostředí.