0
votes

Configuration de base ASP.NET en classe statique

Je veux lire l'URL de mon fichier appsettings.json au sein de la classe statique. J'ai essayé quelque chose comme xxx pré>

mais quand j'essaie d'appeler getectionnel () code> méthode i obtenez la valeur null. P>

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
    "cs1": "some string",
    "cs2": "other string"
  },
  "Urls": {
    "SampleUrl": "google.com"
  },
  "AllowedHosts": "*"


3 commentaires

Pourquoi utilisez-vous SLASH "URLS / SAMSURL" ? Docs dit qu'il devrait être "URL: SAMPUURL"


J'appelle NULL appelant à l'aide de ':' aussi. J'arrête même que j'essaie d'appeler quelque chose comme des "connexions"


Réponse rapide: la section semble être "URL"


3 Réponses :


2
votes

tel qu'il a mentionné ici , vous pouvez ajouter statique Propriété à votre startup.cs xxx

et utilisation dans la classe statique:

var x = staticscconfig.getsection (" quoi que ce soit ");


4 commentaires

Le problème est que j'utilise une classe statique, donc je ne peux pas simplement injecter `` `iconfiguration` `` `` `` `getvalue ()` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` méthode. Je ne peux pas non plus utiliser [] sur `` `Configuration` `` `` car il ne fournit pas façons de le faire. Appeler configurationManager.appsettings ne aide pas non plus


@Nicefsf, mon mauvais. Édité ma réponse pour votre cas


Cette solution fonctionne bien pour moi. Je l'ai trouvé avant de commencer ce fil. Le problème est que je ne pense pas que cette solution soit bonne en termes de bon style de code, alors je suis d'événement en pensant à la refonte de ma classe. Merci pour la solution


Ohh statique - ce n'est pas le bon chemin aussi. Utilisez iconfiguration et n'utilisez pas d'accessoires statiques pour la configuration de cette manière. Ce n'est pas la diable



-1
votes

Utilisez ...

Configuration.GetSection("Urls").GetValue<string>("SampleUrl");


1 commentaires

Je suis toujours null lorsque vous essayez d'obtenir une section de mon fichier JSON



1
votes

Le ConfigurationManager API ne fonctionne pas comme vous vous attendez à ce que ce soit dans ASP.NET CORE. Il ne lancera aucune exception, mais renvoie simplement null chaque fois que vous appelez ses méthodes, comme vous le connaissez.

dans ASP.NET CORE Vous avez de nouveaux objets et API pour réussir la configuration à votre application. . Ils sont basés sur l'idée de sources de configuration pouvant être enregistrées avec un constructeur de configuration qui, une fois intégré, vous donne l'objet de configuration. La source de configuration pour le fichier appsettings.json est automatiquement prise en compte si vous utilisez le constructeur hôte par défaut, vous l'avez donc hors de la boîte. La documentation complète est disponible ici .

L'autre pièce que vous manquez est le conteneur DI que vous avez dans le noyau ASP.NET. Le cadre est fortement déposé et vous guide à une conception basée sur le modèle d'injection de dépendance. Chaque fois que vos services ont besoin de quelque chose, ils le demandent simplement via un paramètre constructeur et un autre acteur (le conteneur DI) veillera à résoudre la dépendance et à injecter l'objet demandé. L'une des interfaces automatiquement enregistrées dans le conteneur DI est l'interface iconfiguration , qui est fondamentalement la configuration que vous avez transmise à votre application.

Cela dit à mon avis que votre conception n'est pas correcte. Accès à la configuration de l'application à partir d'une classe statique n'a pas de sens . Les classes statiques sont généralement censées être le conteneur de méthodes statiques, qui sont fondamentalement des fonctions devenant une entrée et produisant une sortie. Pensez à eux comme des fonctions pures qui implémentent des calculs pour vous et peuvent être utilisées comme des aides à résoudre un problème particulier. Juste pour vous donner un exemple, considérez la classe statique suivante: xxx

Il est tout à fait possible que vos méthodes statiques nécessitent une partie de votre configuration comme entrée afin de travailler. Dans ce cas, vous devez opter pour la conception suivante: xxx


4 commentaires

Eh bien, tout d'abord ConfigurationManager ne fonctionne pas réellement comme je m'attendais. Comme je l'ai mentionné ci-dessus, j'ai compris que ma dessin est fausse à un moment donné. La chose est que cette classe cache toute la logique pour appeler mes API, et j'ai décidé de stocker l'URL de l'API au lieu de le rectifier de la scène dans ma classe. Merci pour votre réponse détaillée


@Nicefsf s'excuse d'utiliser l'expression "n'a pas de sens". Mon intention était seulement de mettre l'accent sur le concept. Désolé si j'ai utilisé un terme que vous avez interprété comme impoli ou inapproprié. Ne vous inquiétez pas des erreurs de conception, nous sommes tous ici pour partager des idées et apprendre de nouvelles choses jour après jour. Homme de codage heureux.


@Nicefsf comme SidENOTE, si vous essayez d'encapsuler la logique pour accéder à une API tiers OPP pour un client HTTP doté appelé. Vous pouvez trouver une documentation complète et des exemples ici .


@Enrice Massone, j'ai écrit des classes pour encapsuler la logique d'appeler toute la méthode de ma API, en leur envoyant des données. Je pense que je devrais au moins le mettre à jour pour utiliser l'usine. Merci pour l'aide