Pozrite sa, ako funguje appsettings.json

Stránka aktualizovaná :
Dátum vytvorenia strany :

Životné prostredie

Visual Studio
  • Visual Studio 2019
ASP.NET Core
  • 3,0
  • 3,1

Ubytovacom zariadení First

Keď vytvoríte nový projekt ASP.NET Core, môžete vytvoriť appSettings. JSON a appSettings. Konfiguračný súbor Development. JSON je Zahrnuté do projektu.

Čo je tu nastavená, je parameter nastavený naappSettings. JSON. V čase vývoja, parametre rovnakého kľúča sú appSettings. Prepísané nastavenia vo vývoji. JSON sa používajú.

image

V tomto článku by som chcel vidieť, ako sú zapnuté a naložené.

Upraviť, aby ste videli, ako to funguje

Pokúste sa pridať parametre do každého konfiguračného súboru, aby ste videli, ako to funguje. Pridať objekt Testobject každý z nich a pridajte parameterTestValue .

Súbor appSettings. JSON je napísaný s kódom znaku Shift-JIS, takže ak chcete zahrnúť japončinu, Uložte ho znova v UTF-8.

appSettings. JSON

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

AppSettings. Development. JSON

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

Získa parametre konfiguračného súboru v akcii indexu HomeController.cs. Existuje spôsob získania zadaním triedy, ale milujem to, pretože to nie je táto téma.

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

Ak vytvoríte, viazať a načítať triedu, nájdete kód podobný nasledujúcemu:

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

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

Zobrazí hodnotu získanú v indexe. cshtml na strane zobrazenia.

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

Ladenie spustiť lokálne

Vybudovať projekt a ladiť a pokúsiť sa spustiť appSettings. Môžete vidieť, že sú zobrazené nastavenia vývoja. JSON.

image

Vývoj je dôvodom, prečo sú premenné prostredia načítané pri spustení aplikácie s jadrom ASP.NET. Parameter nastavený na ASPNETCORE_ENVIRONMENT ako parameter je appSettings. XXXX. JSON Konfiguračný súbor, ktorý zodpovedá xxxx časť je teraz načítaný.

Vyvinúť je nastavený pri ladenie, čo je Debug kartu pre vlastnosti projektu. Môžete vidieť, že je nastavený v systémovej premennej.

image

Ak sa pokúsite zmeniť túto hodnotu na inú hodnotu a ladenie, Myslím, že je potvrdené, že vývojová strana nie je naložený a koreňovej strane je naložený.

image

Mimochodom, tento parameter nie je oddelený ladenie alebo uvoľnenie, takže ak ladenie s vydaním, Používajú sa parametre vývoja. Ladenie a uvoľnenie nemožno oddeliť, rovnako ako v web. config, ale môžete zaregistrovať viac profilov. Môžete vykonať akciu, ako je napríklad kontrola nastavenia uvoľnenia.

Nasadenie a spustenie v službe IIS

Takže čo sa stane, ak nasadiť a spustiť v službe IIS? Skúste skutočne vytvoriť lokalitu v službe IIS a nasadenie programu.

image

Toto je nastavenie trasy, ktoré sa má použiť. Takže ak Nasadzujete program do služby IIS, nemusíte sa obávať vývoja nastavení.

image

Môžete načítať konfiguračný súbor v čase spustenia, ak máte ľubovoľnú hodnotu v ASPNETCORE_ENVIRONMENT premenné prostredia na strane IIS. Otvorte konfiguračný Editor z nastavenia lokality.

image

Z časti vyberte Aspnetcore v System. webserver.

image

Vyberte ApplicationHost. config z umiestnenia.

image

Otvorte kolekciu Environmentpremenných .

image

Pridať kolekciu.

image

Zadajte ASPNETCORE_ENVIRONMENT názov a potom zadajte názov konfiguračného súboru, ktorý chcete načítať do hodnoty.

image

Ak reštartujete lokalitu a zobrazíte webovú obrazovku, môžete vidieť, že načítate cieľový konfiguračný súbor.

image

Zhrnutie

Ak je počiatočná konfigurácia je prípad, appSettings. Ak vývojové. JSON nastavenia sú načítané a nasadené v produkčnom prostredí, ako je IIS, Myslím, že je to v poriadku, aby si myslel, že appSettings. JSON bude načítaný.

Máte len vývoj pri vytváraní projektu, ale môžete vytvoriť viac ako jedno appSettings a môžete zmeniť vývojovú časť na ľubovoľný názov. Ak máte viac ako jedno miesto vykonania, môžete napríklad vytvoriť viacero umiestnení a potom nastaviť a prevádzkovať ASPNETCORE_ENVIRONMENT pre svoje prostredie.