Se hur appsettings.json fungerar

Sidan uppdaterad :
Datum för skapande av sida :

Miljö

Visuell studio
  • Visual Studio 2019
ASP.NET kärna
  • 3.0
  • 3.1

Först

När du skapar ett nytt ASP.NET Core-projekt kan du skapa appsettings.json och appsettings. Konfigurationsfilen development.json är Ingår i projektet.

Vad som anges här är parametern inställd påappsettings.json. Vid tidpunkten för utvecklingen är parametrarna för samma nyckel appsettings. De överskrivna inställningarna i Development.json används.

image

I den här artikeln skulle jag vilja se hur de är bytte och laddade.

Redigera för att se hur det fungerar

Prova att lägga till parametrar i varje konfigurationsfil för att se hur den fungerar. Lägg till ett TestObject-avsnitt i var och en och lägg tillparametern TestValue.

Filen appsettings.json är skriven med skift-JIS-teckenkod, så om du vill inkludera japanska, Spara det igen i UTF-8.

appsettings.json

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

Appsettings. Utveckling.json

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

Hämtar parametrarna för konfigurationsfilen i indexåtgärden för HomeController.cs. Det finns en metod för att erhålla genom att ange klassen, men jag älskar det eftersom det inte är detta ämne.

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

Om du skapar, binder och läser in en klass hittar du kod som liknar följande:

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

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

Visar värdet som erhålls i Index.cshtml på vysidan.

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

Felsökning körs lokalt

Bygg projektet och felsöka det och försök att köra appsettings. Du kan se att inställningarna för development.json visas.

image

Utveckling är anledningen till att miljövariabler läses in när du kör en app med ASP.NET Core. Parametern inställd på ASPNETCORE_ENVIRONMENT som parametern är appsettings. XXXX.json (300/000) En konfigurationsfil som matchar XXXX-delen har nu lästs in.

Utveckla ställs in vid felsökning, vilket är felsökningsfliken för projektegenskaper. Du kan se att den är inställd i miljövariabeln.

image

Om du försöker ändra det här värdet till ett annat värde och felsöka det, Jag tror att det bekräftas att utvecklingssidan inte är laddad och rotsidan är laddad.

image

Förresten, den här parametern är inte åtskild av Felsökning eller Release, så om du felsöker med Release, Utvecklingsparametrarna används. Felsökning och utgivning kan inte separeras, som i web.config, men du kan registrera flera profiler. Du kan vidta åtgärder, till exempel kontrollera versionsinställningarna genom att växla dit.

Distribuera och köra i IIS

Så vad händer om du distribuerar och kör det i IIS? Försök att skapa en plats i IIS och distribuera programmet.

image

Det här är den ruttinställning som ska användas. Så om du distribuerar ett program till IIS behöver du inte oroa dig för att utveckla inställningar.

image

Du kan läsa in konfigurationsfilen vid körning om du har något värde i ASPNETCORE_ENVIRONMENT miljövariabeln på IIS-sidan. Öppna konfigurationsredigeraren från platsinställningarna.

image

Välj aspNetCore i system.webServer i avsnittet .

image

Välj ApplicationHost.config från platsen.

image

Öppna samlingen för miljövariabler.

image

Lägg till en samling.

image

Skriv ASPNETCORE_ENVIRONMENT till namnet och skriv sedan namnet på den konfigurationsfil som du vill läsa in i värdet.

image

Om du startar om webbplatsen och visar webbskärmen kan du se att du läser in målkonfigurationsfilen.

image

Sammanfattning

Om den ursprungliga konfigurationen är fallet, appsettings. Om inställningarna för Development.json läses in och distribueras i en produktionsmiljö som IIS Jag tycker det är ok att tro att appsettings.json kommer att laddas.

Du har bara utveckling när du skapar ett projekt, men du kan skapa mer än en appsettings och du kan ändra utvecklingsdelen till valfritt namn. Om du till exempel har mer än en körningsplats kan du skapa flera platser och sedan ställa in och använda ASPNETCORE_ENVIRONMENT för din miljö.