Vea cómo funciona appsettings.json

Actualización de la página :
Fecha de creación de la página :

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.

image

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.

image

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.

image

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.

image

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.

image

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.

image

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.

image

En la sección, seleccione aspNetCore en system.webServer.

image

Seleccione ApplicationHost.config en la ubicación.

image

Abra la colección environmentVariables.

image

Agregue una colección.

image

Escriba ASPNETCORE_ENVIRONMENT nombre y, a continuación, escriba el nombre del archivo de configuración que desea cargar en value.

image

Si reinicia el sitio y ve la pantalla Web, puede ver que está cargando el archivo de configuración de destino.

image

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.