Vedeți funcționează appsettings.json

Pagina actualizată :
Data creării paginii :

Mediu

Discutii pe forum Visual C
  • Discutii pe forum Visual C...
ASP.NET Core
  • 3.0
  • 3.1

La început,

Atunci când creați un nou proiect ASP.NET Core, puteți crea appsettings.json și appsettings. Fișierul de configurare development.json este Inclus în proiect.

Ceea ce este setat aici este parametrul setat laappsettings.json. La momentul dezvoltării, parametrii aceleiași chei sunt setările aplicațiilor. Se utilizează setările suprascrise din Development.json.

image

În acest articol, aș dori să văd acestea sunt schimbate și încărcate.

Editare pentru a vedea funcționează

Încercați să adăugați parametri la fiecare fișier de configurare pentru a vedea funcționează. Adăugați o secțiune TestObject la fiecare și adăugați parametrulTestValue.

Fișierul appsettings.json este scris cu shift-JIS cod de caractere, deci, dacă doriți să includeți japoneză, Salvați-l din nou în UTF-8.

appsettings.json appsettings.json appsettings.json appsettings

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

Setări aplicații. Development.json A spus:

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

Obține parametrii fișierului de configurare în acțiunea Index a HomeController.cs. Există o metodă de a obține prin specificarea de clasă, dar îmi place pentru că nu este acest subiect.

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

Dacă creați, legați și încărcați o clasă, veți găsi cod similar cu următorul:

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

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

Afișează valoarea obținută în Index.cshtml în partea de vizualizare.

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

Depanare a alerga la nivel local

Construiți proiectul și depanați-l și încercați să rulați setările aplicației. Puteți vedea că setările development.json sunt afișate.

image

Dezvoltarea este motivul pentru care variabilele de mediu sunt încărcate atunci când executați o aplicație cu ASP.NET Core. Parametrul setat la ASPNETCORE_ENVIRONMENT ca parametru este appsettings. XXXX.json A spus: Un fișier de configurare care se potrivește cu porțiunea XXXX este acum încărcat.

Dezvoltarea este setată atunci când depanare, care este fila depanare pentru proprietățile proiectului. Puteți vedea că este setată în variabila de mediu.

image

Dacă încercați să modificați această valoare la o valoare diferită și depanați-o, Cred că este confirmat faptul că partea de dezvoltare nu este încărcată și partea rădăcină este încărcată.

image

Apropo, acest parametru nu este separat de Depanare sau de lansare, deci, dacă depanați cu lansare, Parametrii de dezvoltare sunt utilizați. Depanare a și lansare nu pot fi separate, ca în web.config, dar puteți înregistra mai multe profiluri. Puteți lua măsuri, ar fi verificarea setărilor de lansare prin comutarea acolo.

Implementarea și executarea în IIS

Deci, ce se întâmplă dacă implementați și rulați-l în IIS? Încercați să creați de fapt un site în IIS și să implementați programul.

image

Aceasta este setarea traseului programată pentru a fi utilizată. Deci, dacă implementați un program la IIS, nu trebuie să vă faceți griji cu privire la setările de dezvoltare.

image

Aveți posibilitatea să încărcați fișierul de configurare la momentul rulării dacă aveți orice valoare în variabila de mediu ASPNETCORE_ENVIRONMENT pe partea IIS. Deschideți editorul de configurare din setările site-ului.

image

Din secțiunea , selectați aspNetCore în system.webServer.

image

Selectați ApplicationHost.config din locație.

image

Deschideți colecția mediuVariabile.

image

Adăugați o colecție.

image

Tastați ASPNETCORE_ENVIRONMENT în nume, apoi tastați numele fișierului de configurare pe care doriți să îl încărcați în valoare.

image

Dacă reporniți site-ul și vizualizați ecranul Web, puteți vedea că încărcați fișierul de configurare țintă.

image

Rezumat

Dacă configurația inițială este cazul, setările aplicației. Dacă setările Development.json sunt încărcate și implementate într-un mediu de producție, ar fi IIS, Cred că este ok să cred că appsettings.json vor fi încărcate.

Aveți dezvoltare numai atunci când creați un proiect, dar puteți crea mai multe setări appsettings și puteți modifica partea Dezvoltare la orice nume. Dacă aveți mai multe locații de execuție, de exemplu, puteți crea mai multe locații, apoi configurați și operați ASPNETCORE_ENVIRONMENT pentru mediul dvs.