Veure com funciona appsettings.json

Pàgina actualitzada :
Data de creació de la pàgina :

Medi ambient

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

Al principi

Quan creeu un projecte de ASP.NET Core nou, podeu crear appsettings. JSON i appsettings. El desenvolupament. fitxer de configuració JSON és Inclosos en el projecte.

El que es defineix aquí és el paràmetre definit com aappsettings. JSON. En el moment del desenvolupament, els paràmetres de la mateixa clau són appsettings. Les escenes sobreescrites en el desenvolupament. JSON s'utilitzen.

image

En aquest article, m'agradaria veure com es canvien i es carreguen.

Edita per veure com funciona

Proveu d'afegir paràmetres a cada fitxer de configuració per veure com funciona. Afegir una secció de Testobject a cada un i afegir el paràmetre detestvalue .

El fitxer appsettings. JSON està escrit amb codi de caràcter Shift-JIS, de manera que si voleu incloure japonès, Deseu-la de nou en UTF-8.

appsettings. JSON

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

Appsettings. Desenvolupament. JSON

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

Obté els paràmetres de l'arxiu de configuració en l'acció d'índex de la HomeController.cs. Hi ha un mètode d'obtenció especificant la classe, però m'encanta perquè no és aquest tema.

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

Si creeu, Vinculeu i carregueu una classe, trobareu un codi similar al següent:

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

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

Mostra el valor obtingut a index. cshtml al costat de la vista.

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

Depura la execució localment

Construeix el projecte i depura'l i intenta executar l'appsettings. Podeu veure que el desenvolupament. es mostren els paràmetres JSON.

image

El desenvolupament és la raó per la qual les variables d'entorn es carreguen quan executeu una aplicació amb ASP.NET Core. El paràmetre definit per ASPNETCORE_ENVIRONMENT com a paràmetre és appsettings. XXXX. JSON Ara es carrega un fitxer de configuració que coincideix amb la porció xxxx .

El desenvolupament s'estableix quan es depura, que és la pestanya debug per a les propietats del projecte. Podeu veure que s'estableix a la variable d'entorn.

image

Si intenteu canviar aquest valor a un valor diferent i depurar-lo, Penso que es confirma que el costat de desenvolupament no es carrega i el costat d'arrel es carrega.

image

Per cert, aquest paràmetre no està separat per la depuració o l'alliberament, de manera que si es depura amb l'alliberament, S'utilitzen els paràmetres de desenvolupament. La depuració i l'alliberament no es poden separar, com a web. config, però podeu registrar diversos perfils. Podeu fer accions, com ara comprovar la configuració de la versió canviant-hi.

Implementar i executar a l'IIS

Així què passa si l'implementeu i el executeu a l'IIS? Proveu de crear un lloc web a l'IIS i desplemeu el programa.

image

Aquest és el traçat de la ruta programada per ser utilitzat. Així si està desplegant un programa a IIS, no se l'ha de preocupar de desenvolupar escenes.

image

Podeu carregar el fitxer de configuració en temps d'execució si teniu algun valor a la variable d'entorn ASPNETCORE_ENVIRONMENT al costat de l'IIS. Obriu l'editor de configuració des de la configuració del lloc.

image

Des de la secció, seleccioneu Aspnetcore al System. Webserver.

image

Seleccioneu Applicationhost. config des de la ubicació.

image

Obriu la col·lecció Environmentvariables .

image

Afegir una col·lecció.

image

Escriviu ASPNETCORE_ENVIRONMENT nom i, a continuació, escriviu el nom del fitxer de configuració que voleu carregar en valor.

image

Si reinicieu el lloc i visualitzeu la pantalla web, podeu veure que esteu carregant el fitxer de configuració de destinació.

image

Resum

Si la configuració inicial és el cas, l'appsettings. Si el desenvolupament. la configuració JSON es carrega i s'implementa en un entorn de producció com IIS, Penso que sigui correcte pensar que appsettings. JSON es carregarà.

Només teniu el desenvolupament quan creeu un projecte, però podeu crear més d'un appsettings i podeu canviar la part de desenvolupament a qualsevol nom. Si teniu més d'una ubicació d'execució, per exemple, podeu crear diverses ubicacions i, a continuació, configurar i operar ASPNETCORE_ENVIRONMENT per al vostre entorn.