Veure com funciona appsettings.json
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.
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.
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.
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.
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.
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.
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.
Des de la secció, seleccioneu Aspnetcore al System. Webserver.
Seleccioneu Applicationhost. config des de la ubicació.
Obriu la col·lecció Environmentvariables .
Afegir una col·lecció.
Escriviu ASPNETCORE_ENVIRONMENT nom i, a continuació, escriviu el nom del fitxer de configuració que voleu carregar en valor.
Si reinicieu el lloc i visualitzeu la pantalla web, podeu veure que esteu carregant el fitxer de configuració de destinació.
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.