Bekijk hoe appsettings.json werkt

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Milieu

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

In eerste instantie

Wanneer u een nieuw ASP.NET Core-project maakt, u appsettings.json en appsettings maken. Het configuratiebestand development.json is Inbegrepen in het project.

Wat hier is ingesteld is de parameter ingesteld opappsettings.json. Op het moment van ontwikkeling zijn de parameters van dezelfde sleutel app-instellingen. De overschreven instellingen in Development.json worden gebruikt.

image

In dit artikel, zou ik graag zien hoe ze worden geschakeld en geladen.

Bewerken om te zien hoe het werkt

Probeer parameters toe te voegen aan elk configuratiebestand om te zien hoe het werkt. Voeg een sectie TestObject toe aan elke sectie en voeg de parameterTestValue toe.

Het appsettings.json-bestand is geschreven met shift-JIS-tekencode, dus als u Japans wilt opnemen, Bewaar het opnieuw in UTF-8.

appsettings.json

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

App-instellingen. Development.json

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

Krijgt de parameters van het configuratiebestand in de actie Index van de HomeController.cs. Er is een methode van het verkrijgen van door het specificeren van de klasse, maar ik hou ervan omdat het niet dit onderwerp.

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

Als u een klasse maakt, bindt en laadt, vindt u code die vergelijkbaar is met de volgende:

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

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

Hiermee geeft u de waarde weer die is verkregen in Index.cshtml aan de weergavezijde.

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

Foutopsporing lokaal uitgevoerd

Bouw het project en debugt het af en probeer de app-instellingen uit te voeren. U zien dat de instellingen development.json worden weergegeven.

image

Ontwikkeling is de reden waarom omgevingsvariabelen worden geladen wanneer u een app uitvoert met ASP.NET Core. De parameter die is ingesteld op ASPNETCORE_ENVIRONMENT als de parameter is app-instellingen. XXXX.json XXXX.json Een configuratiebestand dat overeenkomt met het XXXX-gedeelte is nu geladen.

Ontwikkelen wordt ingesteld bij foutopsporing, het foutopsporingstabblad voor projecteigenschappen. U zien dat het is ingesteld in de omgevingsvariabele.

image

Als u probeert deze waarde in een andere waarde te wijzigen en deze te debuggen, Ik denk dat het wordt bevestigd dat de ontwikkeling kant niet is geladen en de wortel kant is geladen.

image

Trouwens, deze parameter wordt niet gescheiden door Debug of Release, dus als je debuggen met Release, De ontwikkelingsparameters worden gebruikt. Foutopsporing en release kunnen niet worden gescheiden, zoals in web.config, maar u meerdere profielen registreren. U actie ondernemen, zoals het controleren van de release-instellingen door daar te schakelen.

IIS implementeren en uitvoeren

Dus wat gebeurt er als je implementeren en uitvoeren in IIS? Probeer een site in IIS te maken en het programma te implementeren.

image

Dit is de route-instelling gepland om te worden gebruikt. Dus als u een programma implementeert op IIS, hoeft u zich geen zorgen te maken over het ontwikkelen van instellingen.

image

U het configuratiebestand op uitvoeringladen als u waarde hebt in de ASPNETCORE_ENVIRONMENT omgevingsvariabele aan de IIS-kant. Open de configuratie-editor vanuit de site-instellingen.

image

Selecteer in de sectie aspNetCore in system.webServer.

image

Selecteer ApplicationHost.config vanaf de locatie.

image

Open de collectie omgevingsvariabelen.

image

Voeg een verzameling toe.

image

Typ ASPNETCORE_ENVIRONMENT in naam en typ vervolgens de naam van het configuratiebestand dat u in waarde wilt laden.

image

Als u de site opnieuw start en het webscherm bekijkt, u zien dat u het doelconfiguratiebestand laadt.

image

Samenvatting

Als de eerste configuratie het geval is, worden de app-instellingen. Als de instellingen van Development.json worden geladen en geïmplementeerd in een productieomgeving zoals IIS, Ik denk dat het ok is om te denken dat appsettings.json zal worden geladen.

U hebt alleen Ontwikkeling wanneer u een project maakt, maar u meer dan één app-instellingen maken en u het onderdeel Ontwikkeling in elke naam wijzigen. Als u bijvoorbeeld meer dan één uitvoeringslocatie hebt, u meerdere locaties maken en vervolgens ASPNETCORE_ENVIRONMENT voor uw omgeving instellen en beheren.