Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Ce contenu est un extrait du livre électronique, Blazor pour les développeurs ASP NET Web Forms pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
La principale façon de charger la configuration d’application dans Web Forms est d’utiliser des entrées dans le fichier web.config , soit sur le serveur, soit sur un fichier de configuration associé référencé par web.config. Vous pouvez utiliser l’objet statique ConfigurationManager
pour interagir avec les paramètres de l’application, les chaînes de connexion du référentiel de données et d’autres fournisseurs de configuration étendus qui sont ajoutés à l’application. Il est courant de voir les interactions avec la configuration d’application comme indiqué dans le code suivant :
var configurationValue = ConfigurationManager.AppSettings["ConfigurationSettingName"];
var connectionString = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionName"].ConnectionString;
Avec ASP.NET Core et côté Blazorserveur, le fichier web.config PEUT être présent si votre application est hébergée sur un serveur Windows IIS. Toutefois, il n’existe aucune ConfigurationManager
interaction avec cette configuration et vous pouvez recevoir une configuration d’application plus structurée à partir d’autres sources. Examinons comment la configuration est collectée et comment vous pouvez toujours accéder aux informations de configuration à partir d’un fichier web.config .
Sources de configuration
ASP.NET Core reconnaît qu’il existe de nombreuses sources de configuration que vous pouvez utiliser pour votre application. L’infrastructure tente de vous offrir le meilleur de ces fonctionnalités par défaut. La configuration est lue et agrégée à partir de ces différentes sources par ASP.NET Core. Les valeurs chargées ultérieurement pour la même clé de configuration sont prioritaires sur les valeurs antérieures.
ASP.NET Core a été conçu pour prendre en charge le cloud et faciliter la configuration des applications pour les opérateurs et les développeurs. ASP.NET Core prend en compte l’environnement et sait s’il est en cours d’exécution dans votre Production
ou Development
environnement. L’indicateur d’environnement est défini dans la variable d’environnement ASPNETCORE_ENVIRONMENT
système. Si aucune valeur n’est configurée, l’application s’exécute par défaut dans l’environnement Production
.
Votre application peut déclencher et ajouter une configuration à partir de plusieurs sources en fonction du nom de l’environnement. Par défaut, la configuration est chargée à partir des ressources suivantes dans l’ordre indiqué :
- fichierappsettings.json , le cas échéant
- Fichier appsettings.{ENVIRONMENT_NAME}.json, s’il existe
- Fichier de secrets utilisateur sur le disque, s’il est présent
- Variables d'environnement
- Arguments de ligne de commande
Format du fichier appsettings.json et accès à celui-ci
Le fichier appsettings.json peut être hiérarchique avec des valeurs structurées comme le json suivant :
{
"section0": {
"key0": "value",
"key1": "value"
},
"section1": {
"key0": "value",
"key1": "value"
}
}
Lorsqu’il est présenté avec le modèle JSON précédent, le système de configuration aplatit les valeurs enfants et référence leurs chemins hiérarchiques complets. Un caractère deux-points (:
) sépare chaque propriété de la hiérarchie. Par exemple, la clé de configuration section1:key0
accède à la valeur section1
de l'objet littéral key0
.
Secrets utilisateur
Les secrets utilisateur sont les suivants :
- Valeurs de configuration stockées dans un fichier JSON sur la station de travail du développeur, en dehors du dossier de développement d’application.
- Chargé uniquement lors de l’exécution dans l’environnement
Development
. - Associé à une application spécifique.
- Géré avec la commande
user-secrets
de l’interface .NET CLI.
Configurez votre application pour le stockage des secrets en exécutant la user-secrets
commande :
dotnet user-secrets init
La commande précédente ajoute un UserSecretsId
élément au fichier projet. L’élément contient un GUID, utilisé pour associer des secrets à l’application. Vous pouvez ensuite définir un secret avec la set
commande. Par exemple:
dotnet user-secrets set "Parent:ApiKey" "12345"
La commande précédente rend la clé de configuration disponible sur la Parent:ApiKey
station de travail d’un développeur avec la valeur 12345
.
Pour plus d’informations sur la création, le stockage et la gestion des secrets utilisateur, consultez le document Stockage sécurisé des secrets d’application pendant le développement dans ASP.NET Core.
Variables d'environnement
L’ensemble suivant de valeurs chargées dans la configuration de votre application est les variables d’environnement du système. Tous les paramètres de variable d’environnement de votre système sont désormais accessibles via l’API de configuration. Les valeurs hiérarchiques sont aplaties et séparées par un caractère deux-points lors de la lecture depuis votre application. Toutefois, certains systèmes d’exploitation n’autorisent pas les noms de variables d’environnement contenant le caractère deux-points. ASP.NET Core résout cette limitation en convertissant les valeurs qui ont des traits de soulignement doubles (__
) en deux-points lorsqu’elles sont accessibles. La Parent:ApiKey
valeur de la section secrets utilisateur ci-dessus peut être remplacée par la variable Parent__ApiKey
d’environnement.
Arguments de ligne de commande
La configuration peut également être fournie en tant qu’arguments de ligne de commande lorsque votre application est démarrée. Utilisez la notation de double tiret (--
) ou de barre oblique (/
) pour indiquer le nom de la valeur de configuration à définir et la valeur à configurer. La syntaxe ressemble aux commandes suivantes :
dotnet run CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3
dotnet run --CommandLineKey1 value1 /CommandLineKey2 value2
dotnet run Parent:ApiKey=67890
Retour de web.config
Si vous avez déployé votre application sur Windows sur IIS, le fichier web.config configure toujours IIS pour gérer votre application. Par défaut, IIS ajoute une référence au module ASP.NET Core (ANCM). ANCM est un module IIS natif qui héberge votre application à la place du serveur web Kestrel. Cette section web.config ressemble au balisage XML suivant :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApp.exe"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
La configuration spécifique à l’application peut être définie en imbrication d’un environmentVariables
élément dans l’élément aspNetCore
. Les valeurs définies dans cette section sont présentées à l’application ASP.NET Core en tant que variables d’environnement. Les variables d’environnement se chargent correctement pendant ce segment de démarrage de l’application.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="Parent:ApiKey" value="67890" />
</environmentVariables>
</aspNetCore>
Lire la configuration dans l’application
ASP.NET Core fournit une configuration d’application via l’interface IConfiguration . Cette interface de configuration doit être demandée par vos Blazor composants, Blazor pages et toute autre classe gérée par core ASP.NET qui a besoin d’accéder à la configuration. L’infrastructure ASP.NET Core remplit automatiquement cette interface avec la configuration résolue configurée précédemment. Sur une page ou dans le balisage Razor d'un composant Blazor, vous pouvez injecter l'objet IConfiguration
avec une directive @inject
au début du fichier .razor comme suit :
@inject IConfiguration Configuration
Cette instruction précédente rend l’objet IConfiguration
disponible en tant que Configuration
variable tout au long du reste du modèle Razor.
Les paramètres de configuration individuels peuvent être lus en spécifiant la hiérarchie des paramètres de configuration recherchée en tant que paramètre d’indexeur :
var mySetting = Configuration["section1:key0"];
Vous pouvez extraire des sections de configuration entières en utilisant la méthode GetSection pour récupérer une collection de clés à un emplacement spécifique, avec une syntaxe similaire à GetSection("section1")
pour récupérer la configuration de la section1 de l'exemple précédent.
Configuration fortement typée
Avec Web Forms, il était possible de créer un type de configuration fortement typé hérité du ConfigurationSection type et des types associés. Un type ConfigurationSection
vous permettait de configurer certaines règles de gestion et le traitement de ces valeurs de configuration.
Dans ASP.NET Core, vous pouvez spécifier une hiérarchie de classes qui recevra les valeurs de configuration. Ces classes :
- Il n'est pas nécessaire d'hériter d'une classe parente.
- Doit inclure des
public
propriétés qui correspondent aux propriétés et références de type de la structure de configuration que vous souhaitez capturer.
Pour l’exemple deappsettings.json précédent, vous pouvez définir les classes suivantes pour capturer les valeurs :
public class MyConfig
{
public MyConfigSection section0 { get; set;}
public MyConfigSection section1 { get; set;}
}
public class MyConfigSection
{
public string key0 { get; set; }
public string key1 { get; set; }
}
Cette hiérarchie de classes peut être remplie en ajoutant la ligne suivante à la Startup.ConfigureServices
méthode (ou emplacement approprié dans Program.cs à l’aide de la builder.Services
propriété au lieu de services
:
services.Configure<MyConfig>(Configuration);
Dans le reste de l'application, vous pouvez ajouter un paramètre d'entrée aux classes ou intégrer une directive @inject
dans les modèles Razor de type IOptions<MyConfig>
pour recevoir les paramètres de configuration à typage fort. La IOptions<MyConfig>.Value
propriété génère la MyConfig
valeur renseignée à partir des paramètres de configuration.
@inject IOptions<MyConfig> options
@code {
var MyConfiguration = options.Value;
var theSetting = MyConfiguration.section1.key0;
}
Vous trouverez plus d’informations sur la fonctionnalité des options dans le modèle d'options dans ASP.NET Core.