Maison > développement back-end > C++ > Pourquoi mon application .NET Core MVC ne parvient-elle pas à injecter un service enregistré dans un contrôleur ?

Pourquoi mon application .NET Core MVC ne parvient-elle pas à injecter un service enregistré dans un contrôleur ?

Susan Sarandon
Libérer: 2025-01-23 17:47:09
original
193 Les gens l'ont consulté

Why Does My .NET Core MVC App Fail to Inject a Registered Service into a Controller?

Solution à l'échec de l'injection de dépendance du contrôleur dans l'application .NET Core MVC

Dans votre application .NET Core MVC, une erreur se produit lorsque vous essayez d'injecter BloggerRepository dans BlogController avec le message suivant :

<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
Copier après la connexion

Analysons le code pour comprendre cette erreur :

Niveau entrepôt :

<code>public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }</code>
Copier après la connexion

Contrôleur :

<code>public class BlogController : Controller
{
    private readonly IBloggerRepository _repository;
    public BlogController(BloggerRepository repository) { ... }
}</code>
Copier après la connexion

Startup.cs :

<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
Copier après la connexion
L'erreur

indique que le système d'injection de dépendances ne peut pas fournir une instance BlogController pour le constructeur BloggerRepository.

Le problème est que le contrôleur attend une classe concrète pour BloggerRepository, tandis qu'il est demandé au conteneur d'injection de dépendances d'enregistrer l'interface IBloggerRepository avec l'implémentation concrète.

Solution :

Pour résoudre ce problème, modifiez le constructeur du contrôleur pour qu'il accepte une interface au lieu d'une classe concrète :

<code>public BlogController(IBloggerRepository repository) { ... }</code>
Copier après la connexion

Avec cette modification, le conteneur d'injection de dépendances peut désormais résoudre avec succès les dépendances et fournir une instance de IBloggerRepository qui sera automatiquement instanciée en tant que BloggerRepository.

Remarque : Différents packages peuvent avoir leur propre façon d'enregistrer les services. Il est recommandé de toujours consulter sa documentation pour obtenir des conseils spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal