La Configuration.GetSection dans Asp.Net Core 2.0 obtenir tous les paramètres

Je suis en train d'apprendre les différentes façons de récupérer des informations de configuration afin que je puisse déterminer la meilleure voie à suivre pour configurer et utiliser la configuration pour un projet à venir.

Je peux accéder aux différents paramètres à l'aide de

var sm = new SmsSettings
    {
        FromPhone = Configuration.GetValue<string>("SmsSettings:FromPhone"),               
        StartMessagePart = Configuration.GetValue<string>("SmsSettings:StartMessagePart"),               
        EndMessagePart = Configuration.GetValue<string>("SmsSettings:EndMessagePart")
    };

J'ai aussi besoin de pouvoir compter paramètres, déterminer les valeurs de certains paramètres, etc. J'ai donc été la construction d'une analyse de la méthode pour faire ce genre de choses et avait besoin de toute une section du fichier de paramètres, qui est ce que j'ai supposé GetSection fait.
Mal.

appsettings fichier

{
"ConnectionStrings": {
  "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=TestingConfigurationNetCoreTwo;Trusted_Connection=True;MultipleActiveResultSets=true",
  "ProductionConnection": "Server=(localdb)\\mssqllocaldb;Database=TestingConfigurationNetCoreTwo_Production;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
  "IncludeScopes": false,
  "LogLevel": {
    "Default": "Warning"
  }
},   
"SmsSettings": {
  "FromPhone": "9145670987",      
  "StartMessagePart": "Dear user, You have requested info from us on starting",      
  "EndMessagePart": "Thank you."
    }
}

Ci-dessous sont les deux captures d'écran de ce que

var section = Configuration.GetSection("ConnectionStrings");

retourne

La Configuration.GetSection dans Asp.Net Core 2.0 obtenir tous les paramètres

La Configuration.GetSection dans Asp.Net Core 2.0 obtenir tous les paramètres

Quelques questions se posent.

  1. Pourquoi est-ce le retour des 3 différents JsonConfigurationProviders, qui comprend tous les paramètres dans le appsettings.fichier json (montré dans l'Image 2)
  2. Pourquoi n'est-ce pas GetSection("ConnectionStrings") actuall faire juste cela, retour le de sous des enfants de la ConnectionStrings
  3. Donné le numéro 2, comment avez-vous fait juste récupérer les enfants de ConnectionStrings ?
  4. En supposant un modèle ConnectionStrings, avec une propriété, la Liste des Connexions, la section de l'être converti à un objet?
  • Vous devriez prendre du temps et de l'examen de la documentation. docs.microsoft.com/en-us/aspnet/core/fundamentals/...
  • Ces méthodes sont destinées à être utilisées lors de la configuration de liaisons de configuration. Ils ne sont pas pour l'analyse.
  • que de toute évidence...je suis conscient que je peux récupérer les paramètres de la manière décrite dans ces documents, mais la description de GetSection est "Obtient une configuration paragraphe avec la clé spécifiée" ... donc je ne reçois pas pourquoi l'ensemble du dossier est retourné et pas seulement les clés enfants. Je devrais être capable de faire les deux section var = Configuration.GetSection("ConnectionStrings"); et la section var = Configuration["ConnectionStrings"] et de l'avoir de retour la même chose
  • Vous pourriez examiner le code source sur GitHub, pour comprendre comment ils ont codé leur.
  • J'ai passé en revue tout le code, testé quelques dizaines de variantes de récupération et de toujours trouver aucun moyen de recevoir les enfants d'un parent de la appsettings fichier. GetSection retourne un IConfigurationSection, qui a la Clé, le Chemin, la Valeur des propriétés, certainement GetSection("ConnectionStrings").Valeur de retour, les enfants, mais ne le fait pas. Je peux récupérer tous les paramètres individuels à l'aide de la Configuration["keyhere"] syntaxe donc je sais de configuration lui-même travaille.
InformationsquelleAutor dinotom | 2017-11-22