Découvrez comment fonctionne appsettings.json
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.
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.
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.
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é.
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.
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.
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.
De la section, sélectionnez aspNetCore dans system.webServer.
Sélectionnez ApplicationHost.config depuis l’emplacement.
Ouvrez la collection environnementVariables.
Ajouter une collection.
Tapez ASPNETCORE_ENVIRONMENT dans le nom, puis tapez le nom du fichier de configuration que vous souhaitez charger en valeur.
Si vous redémarrez le site et affichez l’écran Web, vous pouvez voir que vous chargez le fichier de configuration cible.
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.