0
votes

System.configuration.Configuration Une référence d'objet est requise

Je déchire mes cheveux sur un simple problème. J'ai eu quelques paramètres dans mon application .NET CORE 3 que je pensais être la meilleure de passer à mon fichier appsettings.json fichier. J'ai suivi ce guide pour le faire: https://www.c-sharscorner.com/article/reading-values-de-appsettings-json-in-asp-net-core/

plus bas dans le guide, il y a Une section sur la dépendance injecte une partie de la configuration, que je pensais être une bonne idée de suivre. Il dit d'ajouter le code suivant à mon fichier startup.cs dans la méthode configureservices xxx

quand je fais Ceci, au début configuration est inconnu et je ne peux pas l'importer à partir d'une extension / bibliothèque connue. En regardant les recommandations, je peux voir un package Nuget system.configuration.configurationManager est disponible. J'ai donc essayé d'installer cela pour voir si cela m'aiderait. Malheureusement, après cela, je reçois l'erreur suivante de l'objet de configuration:

Une référence d'objet est requise pour le champ non statique, la méthode ou la configuration de la propriété.Getsection (String) '

du guide que j'ai suivi, et une autre documentation que j'ai pu trouver en ligne, je n'ai pas besoin d'instancier la classe de configuration n'importe où.

Alors, comment Est-ce que j'injecte ma configuration dans la méthode services.configure suivi de cette approche?

edit : fichiers ajoutés

appsettages.json : xxx

configurationProps: xxx


0 commentaires

3 Réponses :


0
votes

Qu'est-ce que vous essayez de faire ressembler beaucoup à la tendance des options. Il y a un article très simple sur celui-ci ici: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/OPTIONS?View=aspnetcore-3.1

Vous n'avez pas besoin du package Nuget pour l'utiliser. Vous devrez simplement modifier votre relevé de configuration.Getsection et assurez-vous que votre appsetTes.json et votre "MySettingsModel" sont structurés correctement.

Si l'article ne résout pas cela pour vous, pouvez-vous publier votre modèle et votre appsettages.json?


4 commentaires

J'ai essayé de suivre le guide, mais je reçois l'erreur initiale où configuration est inconnu maintenant. J'ajouterai les fichiers que vous avez demandés à mon message d'origine.


Avez-vous cette ligne dans votre fichier startup.cs: configuration d'iconfiguration publique {obtenir; } C'est ce qui définit la "configuration" de l'objet afin que vous puissiez l'utiliser. Vous devez probablement encore vous débarrasser de ce paquet Nuget pour vous assurer que cela ne vous empêche pas de vous rendre.


Doit également avoir cette référence dans votre fichier startup.cs afin d'utiliser iconfiguration: à l'aide de Microsoft.extensions.configuration;


Ça l'a fait. Pour une raison quelconque, je n'ai pas eu de configuration injectée dans mon fichier de démarrage et les guides ont supposé qu'il était là.



2
votes

Je vais essayer de faire ce que je disais un peu plus facile à lire en fonction de votre fichier appsettings.json et de votre classement de configurationProps:

dans votre fichier startup.cs, assurez-vous d'avoir: xxx

dans votre fichier startup.cs. Sans cela, configuration.Getsection est inconnu.

Modifiez votre classe à: xxx

alors votre ligne de démarrage.CS pour obtenir la configuration ressemblera à la configuration Ceci: xxx

puis votre injection de dépendance dans votre classe ressemble à ceci: xxx

sauf toute faute de frappe ici, ceci devrait accomplir ce que vous essayez de faire à l'aide du modèle d'options dans le noyau .NET.


1 commentaires

On dirait que tu l'as déjà eu. Au moins cette réponse donnera des informations supplémentaires à la personne suivante.



1
votes

Je pense que le guide que vous avez mentionné utilise .netcore 2.0. Avec .netcore 3.1, il vous suffit d'inclure une "configuration iconfiguration" dans le constructeur du contrôleur, puis vous pouvez accéder à votre appsettages.json par configuration ["ApplicationConfiguration: DébutPort"], comme ci-dessous échantillon: xxx


0 commentaires