Maison >développement back-end >C++ >Pourquoi mon application .NET Core MVC ne parvient-elle pas à injecter une dépendance de référentiel ?

Pourquoi mon application .NET Core MVC ne parvient-elle pas à injecter une dépendance de référentiel ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-23 18:09:12722parcourir

Erreur d'injection de dépendances de l'application .NET Core MVC : impossible de résoudre les dépendances pour l'interface

Description du problème

Une application .NET Core MVC a rencontré une erreur en essayant d'injecter une dépendance de référentiel dans un contrôleur. Le message d'erreur est le suivant :

<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>

Analyse

Cette erreur indique que l'application ne peut pas créer une instance de la classe BloggerRepository à transmettre au constructeur BlogController. Bien que BloggerRepository soit inscrit dans la classe startup :

<code class="language-csharp">services.AddScoped<IBloggerRepository, BloggerRepository>();</code>

Solution

Le problème est que la classe contrôleur demande directement la classe BloggerRepository concrète. Cependant, le conteneur d'injection de dépendances sait uniquement créer des instances de l'interface IBloggerRepository. Pour résoudre cette erreur, le contrôleur doit être ajusté pour accepter l'interface :

<code class="language-csharp">public BlogController(IBloggerRepository repository)
{
    _repository = repository;
}</code>

Autres consignes

Pour les packages NuGet externes, assurez-vous de vérifier leur documentation car ils peuvent avoir des exigences d'enregistrement spécifiques. Par exemple, pour résoudre un message d'erreur concernant IHttpContextAccessor :

<code>Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' ...</code>

La solution est d'utiliser une méthode d'extension personnalisée :

<code class="language-csharp">services.AddHttpContextAccessor();</code>

Why Does My .NET Core MVC Application Fail to Inject a Repository Dependency?

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!

Déclaration:
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