L'obtention de la valeur de appsettings.json .net de base
Vous ne savez pas ce qui me manque ici, mais je ne suis pas en mesure d'obtenir les valeurs de mon appsettings.json dans mon .net application de base. J'ai mon appsettings.json:
{
"AppSettings": {
"Version": "One"
}
}
De démarrage:
public class Startup
{
private IConfigurationRoot _configuration;
public Startup(IHostingEnvironment env)
{
_configuration = new ConfigurationBuilder()
}
public void ConfigureServices(IServiceCollection services)
{
//Here I setup to read appsettings
services.Configure<AppSettings>(_configuration.GetSection("AppSettings"));
}
}
Modèle:
public class AppSettings
{
public string Version{ get; set; }
}
Contrôleur:
public class HomeController : Controller
{
private readonly AppSettings _mySettings;
public HomeController(IOptions<AppSettings> settings)
{
//This is always null
_mySettings = settings.Value;
}
}
_mySettings
est toujours null. Il y a une chose qui me manque ici?
Veuillez lire la documentation sur la façon d'utiliser la configuration. Vous avez mal mis en place la configuration de démarrage de la classe.
Merci pour la documentation. Cela a été utile.
cela peut être encore simplifiée en utilisant l'injection de dépendance de IConfiguration. Ce qui est expliqué ici coding-issues.com/2018/10/...
Merci pour la documentation. Cela a été utile.
cela peut être encore simplifiée en utilisant l'injection de dépendance de IConfiguration. Ce qui est expliqué ici coding-issues.com/2018/10/...
OriginalL'auteur aman | 2017-10-25
Vous devez vous connecter pour publier un commentaire.
Core 2.0
Vous n'avez pas besoin de nouvelles
IConfiguration
dans leStartup
constructeur. Sa mise en œuvre sera injecté par le DI du système.Programme.cs
De démarrage.cs
Bonus:
Si vous vous séparez de votre solution dans de multiples projets avec l'utilisation de bibliothèques de classes, Microsoft.Extensions.Des Options.ConfigurationExtensions package est très pratique pour la lecture des valeurs de
appsettings
fichiers et de les injecter dans votre configuration de classes au sein des projets.Il dispose de 2 extensions que vous pouvez utiliser:
Exemple:
J'ai mis tous les services de sécurité services liés à l'aide
Microsoft.AspNetCore.Identity
dans son propre projet appeléDL.SO.Services.Security
.Les paramètres de sécurité dans appsettings.json
- Je définir les configurations, appelé "AppIdentitySettings", pour les options d'identité je veux mettre en place dans
ASP.NET Core Identity
cadre de mon site web/projet de start-up.Les classes de Configuration de
Ensuite, vous devez définir la configuration des classes, qui sont juste POCOs, pour représenter votre configuration de la structure dans
appsettings.json
. Le nom de la configuration de la classe n'a pas à correspondre au nom de la section vous permet de définir laappsettings.json
, mais plutôt les noms des propriétés besoin de correspondre.Méthode d'Extension
Vous pouvez configurer la liaison entre
appsettings.json
et ceux de la configuration des classes dansStartup
de votre projet web. Mais je préfère définir les méthodes d'extension dans le projet distinct de sorte que vous pouvez plug-and-play.Plug dans le démarrage
Core 1.x
Vous devez dire à
Startup
pour charger le appsettings fichiers.Programme.cs
De démarrage.cs
Merci @Kirk pour le tuyau!
IConfiguration
ne sera probablement pas mis en place ou, autant que je me souvienne, même injectable à 1.x.merci pour le tuyau! Je suis vraiment apprécié. 🙂
Comment puis-je accéder aux Valeurs de la Classe qui détient mes Données?
Voir
Controller
exemple de l'article dans la question d'origine?? Accéder à la valeur en faisantIOptions<AppSettings> settings
etsettings.Value
??Vous pouvez utiliser
IOptionsSnapshot<T>
au lieu deIOptions<T>
. Vous pouvez prendre un coup d'oeil à cet article: offre.solutions/blog/articles/2017/02/17/.... Je n'ai pas eu la chance de l'essayer moi-même.OriginalL'auteur David Liang
L'ajout de David Liang réponse à Core 2.0 -
appsettings.json
du fichier sont liés àASPNETCORE_ENVIRONMENT
variable.ASPNETCORE_ENVIRONMENT
peut être réglé sur toute valeur, mais les trois valeurs sont prises en charge par le framework:Development
,Staging
, etProduction
. SiASPNETCORE_ENVIRONMENT
n'est pas défini, il sera par défaut àProduction
.Pour ces trois valeurs de ces appsettings.ASPNETCORE_ENVIRONMENT.json fichiers sont pris en charge hors de la boîte -
appsettings.Staging.json
,appsettings.Development.json
etappsettings.Production.json
Les trois ci-dessus paramètre d'application des fichiers json peut être utilisé pour configurer de multiples environnements.
Exemple -
appsettings.Staging.json
Utilisation
Configuration["config_var"]
pour récupérer une valeur de configuration.Les objets imbriqués peuvent être obtenus avec la Configuration["Maconfig:SomethingNested"]
OriginalL'auteur Aseem Gautam
Il suffit de créer Un AnyName.cs fichier et collez code ci-dessous.
Doit remplacer YouAppSettingFile.json nom de fichier avec le nom de votre fichier.
Votre .fichier json doit ressembler à ci-dessous.
Maintenant, vous pouvez l'utiliser.
N'oubliez pas de Ajouter une Référence dans votre classe où vous souhaitez utiliser.
Code pour récupérer la valeur.
OriginalL'auteur shajji
Je suppose que le plus simple est de DI. Un exemple d'atteindre Contrôleur.
OriginalL'auteur harveyt
Dans mon cas, c'était simple en utilisant la méthode Bind() sur l'objet de Configuration. Puis ajouter l'objet en tant que singleton dans la DI.
L'Instruction de l'objet peut être aussi complexe que vous le souhaitez.
OriginalL'auteur Lizo Matala