Heim > Backend-Entwicklung > C++ > Warum kann meine .NET Core MVC-Anwendung keine Repository-Abhängigkeit einfügen?

Warum kann meine .NET Core MVC-Anwendung keine Repository-Abhängigkeit einfügen?

Susan Sarandon
Freigeben: 2025-01-23 18:09:12
Original
719 Leute haben es durchsucht

.NET Core MVC-App-Abhängigkeitsinjektionsfehler: Abhängigkeiten für die Schnittstelle können nicht aufgelöst werden

Problembeschreibung

Bei einer .NET Core MVC-App ist beim Versuch, eine Repository-Abhängigkeit in einen Controller einzufügen, ein Fehler aufgetreten. Die Fehlermeldung lautet wie folgt:

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

Analyse

Dieser Fehler weist darauf hin, dass die Anwendung keine Instanz der BloggerRepository-Klasse erstellen kann, um sie an den BlogController-Konstruktor zu übergeben. Obwohl BloggerRepository in der Startup-Klasse registriert ist:

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

Lösung

Das Problem besteht darin, dass die Controller-Klasse direkt die konkrete BloggerRepository Klasse anfordert. Der Dependency-Injection-Container weiß jedoch nur, wie Instanzen der IBloggerRepository-Schnittstelle erstellt werden. Um diesen Fehler zu beheben, sollte der Controller so angepasst werden, dass er die Schnittstelle akzeptiert:

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

Weitere Anweisungen

Überprüfen Sie bei externen NuGet-Paketen unbedingt deren Dokumentation, da für sie möglicherweise besondere Registrierungsanforderungen gelten. Um beispielsweise eine Fehlermeldung zu IHttpContextAccessor zu beheben:

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

Die Lösung besteht darin, eine benutzerdefinierte Erweiterungsmethode zu verwenden:

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

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

Das obige ist der detaillierte Inhalt vonWarum kann meine .NET Core MVC-Anwendung keine Repository-Abhängigkeit einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage