Az appsettings.json működése

Oldal frissítve :
Oldal létrehozásának dátuma :

Környezet

Vizuális stúdió
  • Visual Studio 2019
ASP.NET Core
  • 3.0
  • 3.1

Először

Új ASP.NET Core projekt létrehozásakor létrehozhat appsettings.json és alkalmazásbeállításokat. A development.json konfigurációs fájl Szerepel a projektben.

Mi van beállítva itt a paraméter beállításaappsettings.json. A fejlesztés időpontjában ugyanazon kulcs paraméterei alkalmazásbeállítások. A(z) Development.json felülírt beállításait használja a program.

image

Ebben a cikkben szeretném látni, hogyan vannak kapcsolva és betöltve.

Szerkesztés, hogy hogyan működik

Próbálja meg paramétereket hozzáadni az egyes konfigurációs fájlokhoz, hogy lássa, hogyan működik. Mindegyikhez adjon hozzá egy TestObject szakaszt, és adja hozzá aTestValue paramétert.

Az appsettings.json fájl shift-JIS karakterkóddal van írva, így ha japán Mentse el újra UTF-8-ban.

appsettings.json

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

Alkalmazásbeállítások. Development.json

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

Leveszi a konfigurációs fájl paramétereit a HomeController.cs Index műveletében. Van egy módszer megszerzésének megadásával az osztály, de szeretem, mert ez nem ebben a témában.

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

Ha létrehoz, köt meg és tölt be egy osztályt, a következőhöz hasonló kódot talál:

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

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

Az Index.cshtml fájlban kapott értéket jeleníti meg a nézet oldalon.

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

A hibakeresés helyileg fut

Készítse el a projektet, és hibakeresést, és próbálja meg futtatni az alkalmazásbeállításokat. Láthatja, hogy a development.json beállítások megjelennek.

image

A fejlesztés az oka annak, hogy a környezeti változók betöltődnek, amikor egy alkalmazást futtat ASP.NET Core-ral. A paraméter ként ASPNETCORE_ENVIRONMENT paraméter paraméterbeállítási paraméter. XXXX.json Az XXXX-résznek megfelelő konfigurációs fájl betöltődik.

A fejlesztés hibakereséskor van beállítva, amely a projekttulajdonságok hibakeresési lapja. Láthatja, hogy be van állítva a környezeti változóban.

image

Ha megpróbálja ezt az értéket másik értékre módosítani, és Úgy gondolom, hogy megerősítést nyert, hogy a fejlesztési oldalon nincs betöltve, és a gyökér oldalon van töltve.

image

By the way, ez a paraméter nem választja el debug vagy release, így ha debug a Release, A program a fejlesztési paramétereket használja. A hibakeresés és a feloldás nem választható el egymástól, mint a web.config esetében, de több profilt is regisztrálhat. A kiadási beállításokat az ott való váltással is végrehajthatja.

Üzembe helyezés és futtatás az IIS-ben

Mi történik tehát, ha az IIS-ben telepíti és futtatja? Próbáljon meg létrehozni egy webhelyet az IIS-ben, és telepítse a programot.

image

Ez a használni hozandó útvonalbeállítás. Ha tehát egy programot telepít az IIS-be, nem kell aggódnia a beállítások fejlesztése miatt.

image

A konfigurációs fájlt futáskor töltheti be, ha az IIS oldalán van bármilyen érték a ASPNETCORE_ENVIRONMENT környezeti változóban. Nyissa meg a konfigurációszerkesztőt a webhely beállításaiból.

image

A szakaszban válassza az aspNetCore elemet a system.webServer fájlban.

image

Válassza az ApplicationHost.config elemet a helyről.

image

Nyissa meg a környezetiVáltozók gyűjteményét.

image

Gyűjtemény hozzáadása.

image

Írja be ASPNETCORE_ENVIRONMENT nevét, majd írja be az értékbe betölteni kívánt konfigurációs fájl nevét.

image

Ha újraindítja a webhelyet, és megtekinti a webes képernyőt, láthatja, hogy betölti a célkonfigurációs fájlt.

image

Összefoglaló

Ha a kezdeti konfiguráció a helyzet, az appsettings. Ha a Development.json beállításait éles környezetben, például az IIS-ben tölti be és Azt hiszem, ez rendben van, hogy úgy gondolja, hogy appsettings.json lesz töltve.

Csak akkor rendelkezik fejlesztéssel, ha létrehoz egy projektet, de több alkalmazásbeállítást is létrehozhat, és a Fejlesztési részt bármilyen névre módosíthatja. Ha például egynél több végrehajtási hellyel rendelkezik, több helyet is létrehozhat, majd beállíthat és működtethet ASPNETCORE_ENVIRONMENT a környezetében.