Découvrez comment fonctionne appsettings.json

Page mise à jour :
Date de création de la page :

Environnement

Studio visuel
  • Studio visuel 2019
ASP.NET cœur
  • 3.0
  • 3.1

Dans un premier temps

Lorsque vous créez un nouveau projet ASP.NET Core, vous pouvez créer appsettings.json et appsettings. Le fichier de configuration development.json est Inclus dans le projet.

Ce qui est défini ici est le paramètre défini àappsettings.json. Au moment du développement, les paramètres de la même clé sont les applications. Les paramètres écrasés dans Development.json sont utilisés.

image

Dans cet article, je voudrais voir comment ils sont commutés et chargés.

Modifier pour voir comment cela fonctionne

Essayez d’ajouter des paramètres à chaque fichier de configuration pour voir comment il fonctionne. Ajoutez une section TestObject à chacun d’eux et ajoutez le paramètreTestValue.

Le fichier appsettings.json est écrit avec le code de caractère shift-JIS, donc si vous voulez inclure le japonais, Enregistrez-le à nouveau dans UTF-8.

appsettings.json (en)

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

Appsettings. Development.json (en)

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

Obtient les paramètres du fichier de configuration dans l’action Index du HomeController.cs. Il ya une méthode d’obtenir en spécifiant la classe, mais je l’aime parce que ce n’est pas ce sujet.

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 vous créez, liez et chargez une classe, vous trouverez un code similaire à ce qui suit :

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

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

Affiche la valeur obtenue dans Index.cshtml sur le côté de vue.

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

Debug courir localement

Construisez le projet et débaisez-le et essayez d’exécuter les applications. Vous pouvez voir que les paramètres development.json sont affichés.

image

Le développement est la raison pour laquelle les variables de l’environnement sont chargées lorsque vous exécutez une application avec ASP.NET Core. Le paramètre défini pour ASPNETCORE_ENVIRONMENT que le paramètre est appsettings. XXXX.json (en) Un fichier de configuration qui correspond à la partie XXXX est maintenant chargé.

Développer est réglé lors de débogage, qui est l’onglet de déboguer pour les propriétés du projet. Vous pouvez voir qu’il est réglé dans la variable de l’environnement.

image

Si vous essayez de changer cette valeur à une valeur différente et de la déboiffer, Je pense qu’il est confirmé que le côté développement n’est pas chargé et le côté racine est chargé.

image

Soit dit en passant, ce paramètre n’est pas séparé par Debug ou Release, donc si vous débbug avec Libération, Les paramètres de développement sont utilisés. Debug et Release ne peuvent pas être séparés, comme dans web.config, mais vous pouvez enregistrer plusieurs profils. Vous pouvez prendre des mesures, telles que la vérification des paramètres de version en passant là-bas.

Déployer et exécuter en IIS

Que se passe-t-il si vous le déployez et l’exécutez en IIS ? Essayez de créer un site en IIS et de déployer le programme.

image

C’est le réglage de l’itinéraire qui devrait être utilisé. Donc, si vous déployez un programme à IIS, vous n’avez pas à vous soucier de développer des paramètres.

image

Vous pouvez charger le fichier de configuration au moment de l’exécution si vous avez une valeur dans la variable ASPNETCORE_ENVIRONMENT environnement du côté IIS. Ouvrez l’éditeur de configuration à partir des paramètres du site.

image

De la section, sélectionnez aspNetCore dans system.webServer.

image

Sélectionnez ApplicationHost.config depuis l’emplacement.

image

Ouvrez la collection environnementVariables.

image

Ajouter une collection.

image

Tapez ASPNETCORE_ENVIRONMENT dans le nom, puis tapez le nom du fichier de configuration que vous souhaitez charger en valeur.

image

Si vous redémarrez le site et affichez l’écran Web, vous pouvez voir que vous chargez le fichier de configuration cible.

image

Résumé

Si la configuration initiale est le cas, les applications. Si les paramètres Development.json sont chargés et déployés dans un environnement de production tel que l’IIS, Je pense qu’il est correct de penser que appsettings.json sera chargé.

Vous n’avez le développement que lorsque vous créez un projet, mais vous pouvez créer plus d’une application, et vous pouvez changer la partie Développement à n’importe quel nom. Si vous avez plus d’un lieu d’exécution, par exemple, vous pouvez créer plusieurs emplacements, puis configurer et utiliser ASPNETCORE_ENVIRONMENT pour votre environnement.