J'ai configuré mes données AppSettings dans le fichier appsettings / Config .json comme ceci:
{
"AppSettings": {
"token": "1234"
}
}
J'ai cherché en ligne sur la façon de lire les valeurs AppSettings du fichier .json, mais je n'ai rien pu trouver d'utile.
J'ai essayé:
var configuration = new Configuration();
var appSettings = configuration.Get("AppSettings"); // null
var token = configuration.Get("token"); // null
Je sais qu'avec ASP.NET 4.0, vous pouvez le faire:
System.Configuration.ConfigurationManager.AppSettings["token"];
Mais comment faire cela dans ASP.NET Core?
c#
.net
asp.net-core
.net-core
Oluwafemi
la source
la source
Réponses:
Cela a eu quelques rebondissements. J'ai modifié cette réponse pour être à jour avec ASP.NET Core 2.0 (au 26/02/2018).
Ceci est principalement tiré de la documentation officielle :
Pour travailler avec les paramètres de votre application ASP.NET, il est recommandé d'instancier uniquement un
Configuration
dans laStartup
classe de votre application . Ensuite, utilisez le modèle Options pour accéder aux paramètres individuels. Disons que nous avons unappsettings.json
fichier qui ressemble à ceci:Et nous avons un objet POCO représentant la configuration:
Maintenant, nous construisons la configuration dans
Startup.cs
:Notez que
appsettings.json
sera enregistré par défaut dans .NET Core 2.0. Nous pouvons également enregistrer unappsettings.{Environment}.json
fichier de configuration par environnement si nécessaire.Si nous voulons injecter notre configuration dans nos contrôleurs, nous devons l'enregistrer avec le runtime. Nous le faisons via
Startup.ConfigureServices
:Et nous l'injectons comme ceci:
La
Startup
classe complète :la source
"1.0.0-beta4"
fonctionne pas sur la mienne"1.0.0-alpha4"
. Merci beaucoup!Argument 2: cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationSection' to 'System.Action<....Settings>'
Microsoft.Extensions.Options.ConfigurationExtensions
cela a fonctionné comme prévu.Tout d'abord: le nom de l'assembly et l'espace de noms de Microsoft.Framework.ConfigurationModel ont changé pour Microsoft.Framework.Configuration. Vous devez donc utiliser: par exemple
comme dépendance dans
project.json
. Utilisez beta5 ou 6 si vous n'en avez pas 7 installé. Ensuite, vous pouvez faire quelque chose comme ça dansStartup.cs
.Si vous souhaitez ensuite récupérer une variable à partir du fichier config.json, vous pouvez l'obtenir immédiatement en utilisant:
ou vous pouvez créer une classe appelée AppSettings comme ceci:
et configurer les services comme ceci:
puis y accéder par exemple via un contrôleur comme celui-ci:
la source
Configuration.Get<AppSettings>()
pour désérialiser le fichier entier au lieu d'une section spécifique.Pour .NET Core 2.0, les choses ont un peu changé. Le constructeur de démarrage prend un objet Configuration comme paramètre, il
ConfigurationBuilder
n'est donc pas nécessaire d' utiliser le . Voici le mien:Mon POCO est l'
StorageOptions
objet mentionné en haut:Et la configuration est en fait une sous-section de mon
appsettings.json
fichier, nomméeAzureStorageConfig
:La seule chose que j'ajouterai est que, puisque le constructeur a changé, je n'ai pas testé si quelque chose de plus doit être fait pour qu'il se charge
appsettings.<environmentname>.json
par opposition àappsettings.json
.la source
public HomeController(IOptions<StorageOptions> settings)
, j'obtiens ce message d'erreur: Les types complexes liés au modèle ne doivent pas être des types abstraits ou de valeur et doivent avoir un constructeur sans paramètre.Avec .NET Core 2.2, et de la manière la plus simple possible ...
appsettings.json
est automatiquement chargé et disponible via le constructeur ou l'injection d'action, et il existe également uneGetSection
méthodeIConfiguration
. Il n'est pas nécessaire de modifierStartup.cs
ouProgram.cs
si tout ce dont vous avez besoin estappsettings.json
.la source
var myValue = config["MyKey"]
Si vous souhaitez simplement obtenir la valeur du jeton, utilisez
Configuration["AppSettings:token"]
la source
.NET Core 3.0
Ce n'est peut-être pas le meilleur moyen d'obtenir une valeur de appsettings.json , mais c'est simple et cela fonctionne dans mon application !!
Fichier appsettings.json
Manette:
En haut :
Dans votre code:
la source
Les travaux suivants pour les applications de console;
Installez les packages NuGet suivants (
.csproj
);Créez
appsettings.json
au niveau racine. Faites un clic droit dessus et "Copier dans le répertoire de sortie" comme " Copier si plus récent ".Exemple de fichier de configuration:
Program.cs
configurationSection.Key
etconfigurationSection.Value
aura des propriétés de configuration.la source
Pour .NET Core 2.0, vous pouvez simplement:
Déclarez vos paires clé / valeur dans appsettings.json:
Injectez le service de configuration dans startup.cs et obtenez la valeur à l'aide du service
la source
Je doute que ce soit une bonne pratique, mais cela fonctionne localement. Je mettrai à jour cela s'il échoue lorsque je publie / déploie (vers un service Web IIS).
Étape 1 - Ajoutez cet assemblage en haut de votre classe (dans mon cas, classe de contrôleur):
Étape 2 - Ajoutez ceci ou quelque chose comme ça:
Étape 3 - Appelez la valeur de votre clé en faisant ceci (retourne une chaîne):
la source
appsettings.json
soit dans le bon répertoireJuste pour compléter la réponse de Yuval Itzchakov.
Vous pouvez charger la configuration sans fonction de générateur, vous pouvez simplement l'injecter.
la source
En plus des réponses existantes, je voudrais mentionner que parfois il peut être utile d'avoir des méthodes d'extension pour
IConfiguration
des raisons de simplicité.Je garde la configuration JWT dans appsettings.json donc ma classe de méthodes d'extension ressemble à ceci:
Cela vous fait économiser beaucoup de lignes et vous écrivez simplement du code propre et minimal:
Il est également possible d'enregistrer une
IConfiguration
instance en tant que singleton et de l'injecter où vous en avez besoin - J'utilise le conteneur Autofac, voici comment vous le faites:Vous pouvez faire de même avec MS Dependency Injection:
la source
Voici le cas d'utilisation complet pour ASP.NET Core!
articles.json
ArticleContainer.cs
Startup.cs
Index.cshtml.cs
Index.cshtml.cs
la source
Ils ne cessent de changer les choses - après avoir mis à jour Visual Studio et avoir toute la bombe du projet, sur la voie de la récupération et la nouvelle façon de procéder ressemble à ceci:
J'ai toujours manqué cette ligne!
la source
They just keep changing things
. Ce. Presque toutes les réponses sur cette page ne s'appliquent qu'à une version spécifique de .Net Core..NET Core 2.1.0
3. Installez les dépendances suivantes:
4. Ensuite, IMPORTANT: Faites un clic droit sur le fichier appsettings.json -> cliquez sur Propriétés -> sélectionnez Copier si plus récent:
Enfin, vous pouvez faire:
config ["key1"]
Étant donné que mon fichier de configuration ressemblera à ceci:
la source
Vous pouvez essayer le code ci-dessous. Cela fonctionne pour moi.
Ici, j'ai créé une classe pour obtenir la chaîne de connexion et les paramètres de l'application.
I Fichier Startup.cs dont vous avez besoin pour enregistrer la classe comme ci-dessous.
la source
Pour ASP.NET Core 3.1, vous pouvez suivre cette documentation:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1
Lorsque vous créez un nouveau projet ASP.NET Core 3.1, vous aurez la ligne de configuration suivante dans
Program.cs
:Cela permet les opérations suivantes:
Cela signifie que vous pouvez injecter
IConfiguration
et récupérer des valeurs avec une clé de chaîne, même des valeurs imbriquées. CommeIConfiguration ["Parent:Child"];
Exemple:
appsettings.json
WeatherForecast.cs
la source
Était-ce "tricher"? Je viens de rendre ma configuration dans la classe de démarrage statique, puis je peux y accéder depuis n'importe où ailleurs:
la source
Obtenez-le dans le contrôleur en tant qu'objet via un appel
Get<YourType>()
:la source
Vous devez d'abord injecter IConfiguration, puis pour lire à partir des paramètres des applications, vous pouvez utiliser l'une des méthodes suivantes:
Obtenez les données d'une section
Obtenez une valeur dans une section
Obtenez la valeur imbriquée dans la section
la source
La manière .NET Core 2.2
(Nul doute que Microsoft le changera à nouveau en quelque chose de complètement différent dans la prochaine version .NET.)
1. appSettings.json
Cela peut ressembler à ceci. Ici, nous allons charger Setting1 et Setting2
2. AppSettings.cs
La POCO classe pour tenir Setting1 et Setting2. Nous allons charger le appsettings.json dans cet objet de classe. La structure de la classe POCO doit correspondre au fichier JSON, les propriétés peuvent être imbriquées dans d'autres propriétés / classes si vous le souhaitez.
3 Startup.cs
Chargez appSettings.json dans votre objet AppSettings et commencez à l'utiliser:
la source
Avec la dernière itération de netcoreapp 3.1, vous pouvez le faire assez simplement sans aucune dépendance tierce.
J'ai créé un résumé pour cela , mais vous pouvez utiliser cette classe pour lire un fichier JSON et retourner des propriétés dynamiques.
J'ai fait cela spécifiquement pour pouvoir utiliser un appconfig.json dans mon application de console dotnet. Je viens de mettre cela dans ma
Program.Main
fonction:Et cela retournera un
dynamic
objet pour la propriété. (Un JsonElement si ce n'est pas une primitive). Monappsettings.json
fichier ressemble à ceci:la source