Se, hvordan appsettings.json fungerer

Side opdateret :
Dato for oprettelse af side :

Miljø

Visual Studio
  • Visual Studio 2019
ASP.NET kerne
  • 3.0
  • 3.1

I første omgang

Når du opretter et nyt ASP.NET Core-projekt, kan du oprette appsettings.json og appsettings. Konfigurationsfilen development.json er Inkluderet i projektet.

Hvad er sat her er parameteren indstillet tilappsettings.json. På udviklingstidspunktet er parametrene for den samme nøgle appsettings. De overskrevne indstillinger i Development.json bruges.

image

I denne artikel vil jeg gerne se, hvordan de er skiftet og indlæst.

Rediger for at se, hvordan det fungerer

Prøv at føje parametre til hver konfigurationsfil for at se, hvordan den fungerer. Føj sektionen TestObject til hver enkelt, og føj parameterenTestValue.

Filen appsettings.json er skrevet med shift-JIS-tegnkode, så hvis du vil medtage japansk, Gem 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 で保存しなおすこと。"
  }
}

Appindstillinger. Udvikling.json

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

Henter konfigurationsfilens parametre i handlingen Indeks i HomeController.cs. Der er en metode til at opnå ved at angive klassen, men jeg elsker det, fordi det ikke er dette emne.

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

Hvis du opretter, binder og indlæser en klasse, finder du en kode, der ligner følgende:

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

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

Viser den værdi, der er opnået i Index.cshtml på visningssiden.

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

Fejlfinding køre lokalt

Byg projektet, og debug det, og prøv at køre appsettings. Du kan se, at indstillingerne development.json vises.

image

Udvikling er grunden til, at miljøvariabler indlæses, når du kører en app med ASP.NET Core. Den parameter, der er angivet til ASPNETCORE_ENVIRONMENT, da parameteren er appsettings. XXXX.json delte et link. En konfigurationsfil, XXXX der svarer til XXXX-delen, er nu indlæst.

Udvikling angives ved fejlfinding, som er fejlfindingsfanen for projektegenskaber. Du kan se, at den er angivet i miljøvariablen.

image

Hvis du forsøger at ændre denne værdi til en anden værdi og foretage fejlfinding af den, Jeg tror, at det er bekræftet, at udviklingen side ikke er indlæst, og roden side er indlæst.

image

Af den måde, er denne parameter ikke adskilt af Debug eller Release, så hvis du debug med Release, Udviklingsparametrene bruges. Fejlfinding og frigivelse kan ikke adskilles, som i web.config, men du kan registrere flere profiler. Du kan foretage dig noget, f.eks.

Installere og køre i IIS

Så hvad sker der, hvis du installerer og kører det i IIS? Prøv rent faktisk at oprette et websted i IIS og installere programmet.

image

Dette er den rute indstilling dømt til at blive brugt. Så hvis du implementerer et program til IIS, behøver du ikke bekymre dig om at udvikle indstillinger.

image

Du kan indlæse konfigurationsfilen på kørselstidspunktet, hvis du har en værdi i ASPNETCORE_ENVIRONMENT miljøvariabel på IIS-siden. Åbn konfigurationseditoren fra webstedsindstillingerne.

image

Vælg aspNetCore i system.webServer i sektionen.

image

Vælg ApplicationHost.config på lokationen.

image

Åbn samlingen environmentVariables.

image

Tilføj en samling.

image

Skriv ASPNETCORE_ENVIRONMENT navn, og skriv derefter navnet på den konfigurationsfil, du vil indlæse i værdi.

image

Hvis du genstarter webstedet og får vist webskærmen, kan du se, at du indlæser målkonfigurationsfilen.

image

Resumé

Hvis den oprindelige konfiguration er tilfældet, er appindstillingerne. Hvis indstillingerne Development.json indlæses og implementeres i et produktionsmiljø, f.eks. Jeg synes, det er ok at tro, at appsettings.json vil blive indlæst.

Du har kun Udvikling, når du opretter et projekt, men du kan oprette mere end én appsettings, og du kan ændre udviklingsdelen til et hvilket som helst navn. Hvis du har mere end én udførelsesplacering, ASPNETCORE_ENVIRONMENT kan du f.eks.