Oglejte si, kako deluje appsettings.json

Stran posodobljena :
Datum ustvarjanja strani :

Okolje

Vizualni Studio
  • Vizualni Studio 2019
ASP.NET jedro
  • 3,0
  • 3,1

Sprva

Ko ustvarite nov ASP.NET Core projekt, lahko ustvarite appsettings. JSON in appsettings. The Development. JSON konfiguracijske datoteke je Vključeno v projekt.

Kaj je nastavljeno tukaj je parameter nastavljen naappsettings. JSON. V času razvoja so parametri istega ključa appsettings. Prepišejo nastavitve v Development. JSON se uporabljajo.

image

V tem članku bi rad videl, kako so preklopili in naložili.

Uredi, da vidite, kako deluje

Poskusite dodati parametre za vsako konfiguracijsko datoteko, da vidite, kako deluje. Vsakemu dodajte odsek Testobject in dodajte parameterTestValue .

Datoteka appsettings. JSON je napisana s kodo znaka SHIFT-JIS, tako da če želite vključiti Japonsko, Shrani ga še enkrat v UTF-8.

appsettings. JSON

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

Nastavitve za appsettings. Razvoj podeželja. JSON

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

Dobi parametre konfiguracijske datoteke v dejanju index HomeController.cs. Obstaja način pridobivanja z določitvijo razred, vendar mi je všeč, ker to ni ta predmet.

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

Če ustvarite, povežete in naložite razred, boste našli kodo, podobno naslednjima:

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

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

Prikaže vrednost, ki je bila pridobljena v indeksu. cshtml na strani pogleda.

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

Iskanje napak, ki se izvajajo lokalno

Zidava načrt ter razhroščiti to ter začeti teči appsettings. Vidite lahko, da se prikažejo nastavitve razvoja. JSON.

image

Razvoj je razlog, zakaj se spremenljivke okolja naložijo, ko zaženete aplikacijo z ASP.NET Core. Parameter nastavljen na ASPNETCORE_ENVIRONMENT kot parameter appsettings. XXXX. JSON Konfiguracijska datoteka, ki se ujema z xxxx delom, je zdaj naložena.

Razvoj je nastavljen pri odpravljanju napak, ki je zavihek za iskanje napak za lastnosti projekta. Vidite lahko, da je nastavljena v spremenljivki okolja.

image

Če poskušate to vrednost spremeniti v drugo vrednost in jo odpraviti, Mislim, da je potrjeno, da je razvoj strani ni naložen in koren strani je naložen.

image

Mimogrede, ta parameter ni ločen z debug ali Release, tako da, če ste debug z Release, Uporabljajo se razvojni parametri. Debug in Release ni mogoče ločiti, kot v Web. config, vendar lahko registrirate več profilov. Lahko ukrepam, kot je preverjanje nastavitev sproščanja s preklapljanjem tam.

Uvajanje in zagon v storitvah IIS

Torej, kaj se zgodi, če uvedete in zaženete v IIS? Poskusite dejansko ustvariti mesto v IIS in uvajanje programa.

image

To je nastavitev načrtovane poti, ki jo želite uporabiti. Torej, če ste uvajanje program za IIS, vam ni treba skrbeti za razvoj nastavitev.

image

Konfiguracijsko datoteko lahko naložite v času za zagon, če imate v spremenljivki okolja ASPNETCORE_ENVIRONMENT na strani IIS katero koli vrednost. Odprite urejevalnik konfiguracije iz nastavitev mesta.

image

V razdelku Izberite Aspnetcore v System. webserver.

image

Na lokaciji izberite applicationHost. config.

image

Odprite zbirko Environmentspremenljivke .

image

Dodajte zbirko.

image

Vnesite ASPNETCORE_ENVIRONMENT v imenu in vnesite ime konfiguracijske datoteke, ki jo želite naložiti v vrednost.

image

Če znova zaženete spletno mesto in si ogledate spletni zaslon, lahko vidite, da Nalagam ciljno konfiguracijsko datoteko.

image

Povzetek

Če je začetna konfiguracija je primer, appsettings. Če so nastavitve za razvoj. JSON naložene in razporejene v proizvodnem okolju, kot so IIS, Mislim, da je ok, da mislim, da appsettings. JSON bo naložen.

Pri ustvarjanju projekta imate samo razvojni program, vendar lahko ustvarite več kot eno appsettings, razvojni del pa lahko spremenite v poljubno ime. Če imate več kot eno mesto izvrševanja, lahko na primer ustvarite več lokacij in nato nastavite in upravljate ASPNETCORE_ENVIRONMENT za okolje.