Zobacz, jak działa appsettings.json

Strona zaktualizowana :
Data utworzenia strony :

Środowiska

Visual Studio
  • Visual Studio 2019
Rdzeń ASP.NET
  • 3.0
  • 3.1

Na początku

Podczas tworzenia nowego projektu ASP.NET Core można tworzyć pliku appsettings.json i appsettings. Plik konfiguracyjny development.json jest Zawarte w projekcie.

To, co jest ustawione w tym miejscu, to parametr ustawiony naappsettings.json. W momencie opracowywania parametry tego samego klucza są appsettings. Używane są ustawienia nadpisane w pliku Development.json.

image

W tym artykule chciałbym zobaczyć, jak są przełączane i ładowane.

Edytuj, aby zobaczyć, jak to działa

Spróbuj dodać parametry do każdego pliku konfiguracyjnego, aby zobaczyć, jak to działa. Dodaj sekcję TestObject do każdego z nich i dodajparametr TestValue.

Plik appsettings.json jest napisany z kodem znaków shift-JIS, więc jeśli chcesz dołączyć japoński, Zapisz go ponownie w UTF-8.

appsettings.json

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

Appsettings. Rozwój.json

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

Pobiera parametry pliku konfiguracji w akcji Indeks HomeController.cs. Istnieje metoda uzyskania poprzez określenie klasy, ale kocham go, ponieważ nie jest to temat.

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

Jeśli tworzysz, wiązujesz i ładujesz klasę, znajdziesz kod podobny do następującego:

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

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

Wyświetla wartość uzyskaną w pliku Index.cshtml po stronie widoku.

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

Debugowanie uruchamiane lokalnie

Skompiluj projekt i debuguj go i spróbuj uruchomić appsettings. Widać, że są wyświetlane ustawienia development.json.

image

Program rozwoju jest powodem, dla którego zmienne środowiskowe są ładowane po uruchomieniu aplikacji z ASP.NET Core. Parametr ustawiony na ASPNETCORE_ENVIRONMENT, ponieważ parametr jest appsettings. XXXX.json Plik konfiguracyjny, który pasuje do części XXXX jest teraz ładowany.

Programowanie jest ustawiany podczas debugowania, który jest karta debugowania dla właściwości projektu. Widać, że jest ustawiona w zmiennej środowiskowej.

image

Jeśli spróbujesz zmienić tę wartość na inną wartość i ją debugować, Myślę, że potwierdzono, że strona rozwoju nie jest załadowana, a strona główna jest załadowana.

image

Nawiasem mówiąc, ten parametr nie jest oddzielony debugowaniem lub zwolnieniem, więc jeśli debugujesz za pomocą release, Używane są parametry rozwoju. Debugowania i wydania nie można rozdzielić, jak w web.config, ale można zarejestrować wiele profili. Możesz podjąć działania, takie jak sprawdzanie ustawień wersji, przełączając się tam.

Wdrażanie i uruchamianie w uiszonych

Co się stanie, jeśli wdrożysz i uruchomisz go w uiświadach? Spróbuj faktycznie utworzyć witrynę w serwisie IIS i wdrożyć program.

image

Jest to ustawienie trasy przeznaczone do użycia. Jeśli więc wdrażasz program w uiświadkwy, nie musisz się martwić o tworzenie ustawień.

image

Plik konfiguracji można załadować w czasie wykonywania, jeśli masz dowolną wartość w zmiennej środowiskowej ASPNETCORE_ENVIRONMENT po stronie usług IIS. Otwórz edytor konfiguracji z ustawień witryny.

image

W sekcji wybierz aspNetCore w pliku system.webServer.

image

Wybierz applicationhost.config z lokalizacji.

image

Otwórz kolekcję environmentVariables.

image

Dodaj kolekcję.

image

Wpisz ASPNETCORE_ENVIRONMENT w nazwie, a następnie wpisz nazwę pliku konfiguracyjnego, który chcesz załadować do wartości.

image

Po ponownym uruchomieniu witryny i wyświetlenia ekranu sieci Web można zobaczyć, że ładujesz docelowy plik konfiguracyjny.

image

Krótki opis

Jeśli konfiguracja początkowa jest w przypadku, appsettings. Jeśli ustawienia development.json są ładowane i wdrażane w środowisku produkcyjnym, takim jak usługi IIS, Myślę, że to ok, aby myśleć, że appsettings.json zostanie załadowany.

Programowanie jest dostępne tylko podczas tworzenia projektu, ale można utworzyć więcej niż jeden appsettings i można zmienić część rozwoju na dowolną nazwę. Jeśli masz więcej niż jedną lokalizację wykonywania, na przykład można utworzyć wiele lokalizacji, a następnie skonfigurować i obsługiwać ASPNETCORE_ENVIRONMENT dla środowiska.