Sehen Sie, wie appsettings.json funktioniert

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Umgebung

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

Zunächst

Wenn Sie ein neues ASP.NET Core-Projekt erstellen, können Sie appsettings.json und appsettings erstellen. Die Konfigurationsdatei development.json ist Im Projekt enthalten.

Hier wird der Parameterappsettings.json festgelegt. Zum Zeitpunkt der Entwicklung sind die Parameter des gleichen Schlüssels Appsettings. Die überschriebenen Einstellungen in Development.json werden verwendet.

image

In diesem Artikel möchte ich sehen, wie sie geschaltet und geladen werden.

Bearbeiten, um zu sehen, wie es funktioniert

Versuchen Sie, jeder Konfigurationsdatei Parameter hinzuzufügen, um zu sehen, wie sie funktioniert. Fügen Sie jedem TestObject-Abschnitt einen TestObject-Abschnitt hinzu, und fügen Sie denParameter TestValue hinzu.

Die Datei appsettings.json wird mit shift-JIS-Zeichencode geschrieben, Speichern Sie es erneut in UTF-8.

appsettings.json

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

Appsettings. Entwicklung.json

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

Ruft die Parameter der Konfigurationsdatei in der Indexaktion der HomeController.cs ab. Es gibt eine Methode, um durch die Angabe der Klasse zu erhalten, aber ich liebe es, weil es nicht dieses Thema ist.

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

Wenn Sie eine Klasse erstellen, binden und laden, finden Sie Code ähnlich dem folgenden:

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

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

Zeigt den in Index.cshtml erhaltenen Wert auf der Ansichtsseite an.

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

Debuglauf lokal

Erstellen Sie das Projekt, debuggen Sie es, und versuchen Sie, die Appsettings auszuführen. Sie können sehen, dass die einstellungen von development.json angezeigt werden.

image

Die Entwicklung ist der Grund, warum Umgebungsvariablen geladen werden, wenn Sie eine App mit ASP.NET Core ausführen. Der Parameter, der auf ASPNETCORE_ENVIRONMENT festgelegt ist, da der Parameter appsettings ist. XXXX.json Eine Konfigurationsdatei, die mit dem XXXX-Teil übereinstimmt, wird jetzt geladen.

Entwickeln wird beim Debuggen festgelegt, d. h. die Debug-Registerkarte für Projekteigenschaften. Sie können sehen, dass es in der Umgebungsvariablen festgelegt ist.

image

Wenn Sie versuchen, diesen Wert in einen anderen Wert zu ändern und zu debuggen, Ich denke, dass es bestätigt wird, dass die Entwicklungsseite nicht geladen und die Wurzelseite geladen ist.

image

Übrigens ist dieser Parameter nicht durch Debuggen oder Release getrennt, wenn Sie also mit Release debuggen, Die Entwicklungsparameter werden verwendet. Debug und Release können nicht getrennt werden, wie in web.config, aber Sie können mehrere Profile registrieren. Sie können Maßnahmen ergreifen, z. B. die Freigabeeinstellungen überprüfen, indem Sie dort wechseln.

Bereitstellen und Ausführen in IIS

Was passiert also, wenn Sie es in IIS bereitstellen und ausführen? Versuchen Sie, eine Site in IIS zu erstellen und das Programm bereitzustellen.

image

Dies ist die Routeneinstellung, die verwendet werden soll. Wenn Sie also ein Programm auf IIS bereitstellen, müssen Sie sich keine Gedanken über die Entwicklung von Einstellungen machen.

image

Sie können die Konfigurationsdatei zur Laufzeit laden, wenn Sie einen Wert in der ASPNETCORE_ENVIRONMENT Umgebungsvariablen auf der IIS-Seite haben. Öffnen Sie den Konfigurationseditor über die Standorteinstellungen.

image

Wählen Sie im Abschnitt aspNetCore in system.webServer aus.

image

Wählen Sie ApplicationHost.config aus dem Speicherort aus.

image

Öffnen Sie die environmentVariables-Auflistung.

image

Fügen Sie eine Auflistung hinzu.

image

Geben Sie ASPNETCORE_ENVIRONMENT namen, und geben Sie dann den Namen der Konfigurationsdatei ein, die Sie in den Wert laden möchten.

image

Wenn Sie die Website neu starten und den Webbildschirm anzeigen, können Sie sehen, dass Sie die Zielkonfigurationsdatei laden.

image

Zusammenfassung

Wenn die Erstkonfiguration der Fall ist, werden die Appsettings. Wenn die Development.json-Einstellungen in einer Produktionsumgebung wie IIS geladen und bereitgestellt werden, Ich denke, es ist in Ordnung zu denken, dass appsettings.json geladen wird.

Sie haben nur Entwicklung, wenn Sie ein Projekt erstellen, aber Sie können mehr als eine App-Einstellungen erstellen, und Sie können den Entwicklungsteil in einen beliebigen Namen ändern. Wenn Sie z. B. über mehr als einen Ausführungsspeicherort verfügen, können Sie mehrere Speicherorte erstellen und dann ASPNETCORE_ENVIRONMENT für Ihre Umgebung einrichten und betreiben.