J'ai besoin d'obtenir une référence du service hébergé enregistré: IT implémente interface Le code suivant ne fonctionne pas. ihostedservice code> et il commence correctement au démarrage de l'application Web. P> < P> J'ai besoin d'obtenir le service de service dans certains contrôleurs et d'accéder aux membres du public objet. p>
xservice code> est null. p>
3 Réponses :
J'ai Temporaly géré cela en stockant une référence staticly en classe qui est défini sur le début de la course. P>
Je déplacerais toutes les fonctionnalités à un singleton, puis dans mon startup, je ferais quelque chose comme puis je pourrais injecter le singleton dans les contrôleurs. P> Je ne sais pas si le noyau gérera la même référence (je pense que dans le noyau 3 sera le cas, pas si sûr de <= 2.2), mais je vais essayer. P> P>
[Copier comme réponse]
La réponse qui fonctionne dans .NET CORE 3.1+ a été donnée par @ gunr2171 dans le 3ème commentaire de la question originale:
Ienumerable
Pourquoi ne pas demander un autre service de ferry d'informations entre votre contrôleur et le service hébergé? Une sorte de couche de mise en cache.
C'est mon plan de sauvegarde - utilisez une propriété statique qui sera remplie par le service après son démarrage. Mais je suppose qu'il y a un moyen "plus correct" d'obtenir la référence.
Donc, selon le Code source A> L'article est enregistré en tant que
ihostedService code>. Vous devriez être capable de demander un
iEnumerable code> dans votre constructeur de votre contrôleur. Mais je ne pense pas que vous puissiez demander le service hébergé directement par son nom.
Eh bien, vous créez également de nouvelles étendues dans votre code afin que votre service de fond soit immédiatement hors de portée.
IEnumerable dans le constructeur du contrôleur ne fonctionne pas. Cela crée une nouvelle instance, mais j'ai besoin de la référence d'origine.
Dupliqué possible de Comment puis-je faire référence à un service ihostedservice via une injection de dépendance dans ASP.NET CORE?
Quelqu'un a-t-il déployé le service hébergé de Core sur IIS?