Vea cómo funciona appsettings.json
Ambiente
- Visual Studio
-
- Visual Studio 2019
- Núcleo ASP.NET
-
- 3.0
- 3.1
Al principio
Al crear un nuevo proyecto ASP.NET Core, puede crear appsettings.json y appsettings. El archivo de configuración development.json es Incluido en el proyecto.
Lo que se establece aquí es el parámetro establecido enappsettings.json. En el momento del desarrollo, los parámetros de la misma clave son appsettings. Se utiliza la configuración sobrescrita en Development.json.
En este artículo, me gustaría ver cómo se cambian y se cargan.
Editar para ver cómo funciona
Intente agregar parámetros a cada archivo de configuración para ver cómo funciona. Agregue una sección TestObject a cada uno y agregue el parámetroTestValue.
El archivo appsettings.json está escrito con código de carácter shift-JIS, por lo que si desea incluir japonés, Guárdelo de nuevo 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. Development.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"TestObject": {
"TestValue": "Development です。",
"Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
}
}
Obtiene los parámetros del archivo de configuración en la acción Index del HomeController.cs. Hay un método para obtener especificando la clase, pero me encanta porque no es este 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 crea, enlaza y carga una clase, encontrará código similar al siguiente:
// クラス定義 public class TestObject { public string TestValue { get; set; } public string Comment { get; set; } } // 読み込み var testObject = _configuration.GetSection(nameof(TestObject)).Get<TestObject>();
Muestra el valor obtenido en Index.cshtml en el lado de la vista.
<p>appsettings.json から取得したテキストを表示</p>
<p>@ViewData["Message"]</p>
Depurar ejecutar localmente
Compile el proyecto y depure e intente ejecutar los ajustes. Puede ver que se muestra la configuración development.json.
El desarrollo es la razón por la que se cargan las variables de entorno al ejecutar una aplicación con ASP.NET Core. El parámetro establecido en ASPNETCORE_ENVIRONMENT como el parámetro es appsettings. XXXX.json Ahora se carga un archivo de configuración que coincide con la parte XXXX.
Desarrollar se establece al depurar, que es la pestaña de depuración para las propiedades del proyecto. Puede ver que se establece en la variable de entorno.
Si intenta cambiar este valor a un valor diferente y depurarlo, Creo que se confirma que el lado de desarrollo no está cargado y el lado raíz está cargado.
Por cierto, este parámetro no está separado por Debug o Release, así que si usted depura con la versión, Se utilizan los parámetros de desarrollo. Debug y Release no se pueden separar, como en web.config, pero puede registrar varios perfiles. Puede realizar acciones, como comprobar la configuración de la versión cambiando allí.
Implementar y ejecutar en IIS
Entonces, ¿qué sucede si lo implementa y ejecuta en IIS? Intente crear un sitio en IIS e implementar el programa.
Esta es la configuración de ruta que se va a utilizar. Por lo tanto, si va a implementar un programa en IIS, no tiene que preocuparse por desarrollar la configuración.
Puede cargar el archivo de configuración en tiempo de ejecución si tiene algún valor en la variable de entorno ASPNETCORE_ENVIRONMENT en el lado De IIS. Abra el editor de configuración desde la configuración del sitio.
En la sección, seleccione aspNetCore en system.webServer.
Seleccione ApplicationHost.config en la ubicación.
Abra la colección environmentVariables.
Agregue una colección.
Escriba ASPNETCORE_ENVIRONMENT nombre y, a continuación, escriba el nombre del archivo de configuración que desea cargar en value.
Si reinicia el sitio y ve la pantalla Web, puede ver que está cargando el archivo de configuración de destino.
Resumen
Si la configuración inicial es el caso, la configuración. Si la configuración de Development.json se carga e implementa en un entorno de producción como IIS, Creo que está bien pensar que appsettings.json se cargará.
Solo tiene Desarrollo al crear un proyecto, pero puede crear más de una configuración y puede cambiar la parte de desarrollo a cualquier nombre. Si tiene más de una ubicación de ejecución, por ejemplo, puede crear varias ubicaciones y, a continuación, configurar y operar ASPNETCORE_ENVIRONMENT para su entorno.