Heim > Backend-Entwicklung > C++ > Warum kann meine .NET Core MVC-App keinen registrierten Dienst in einen Controller einfügen?

Warum kann meine .NET Core MVC-App keinen registrierten Dienst in einen Controller einfügen?

Susan Sarandon
Freigeben: 2025-01-23 17:47:09
Original
193 Leute haben es durchsucht

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

Lösung für Controller-Abhängigkeitsinjektionsfehler in der .NET Core MVC-Anwendung

In Ihrer .NET Core MVC-Anwendung tritt beim Versuch, BloggerRepository in BlogController einzuschleusen, ein Fehler mit der folgenden Meldung auf:

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

Lassen Sie uns den Code analysieren, um diesen Fehler zu verstehen:

Lagerebene:

<code>public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }</code>
Nach dem Login kopieren

Verantwortlicher:

<code>public class BlogController : Controller
{
    private readonly IBloggerRepository _repository;
    public BlogController(BloggerRepository repository) { ... }
}</code>
Nach dem Login kopieren

Startup.cs:

<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
Nach dem Login kopieren
Der

-Fehler weist darauf hin, dass das Abhängigkeitsinjektionssystem keine BlogController-Instanz für den BloggerRepository-Konstruktor bereitstellen kann.

Das Problem besteht darin, dass der Controller eine konkrete Klasse für BloggerRepository erwartet, während der Abhängigkeitsinjektionscontainer angewiesen wird, die Schnittstelle IBloggerRepository bei der konkreten Implementierung zu registrieren.

Lösung:

Um dieses Problem zu lösen, ändern Sie den Konstruktor des Controllers so, dass er eine Schnittstelle anstelle einer konkreten Klasse akzeptiert:

<code>public BlogController(IBloggerRepository repository) { ... }</code>
Nach dem Login kopieren

Mit dieser Änderung kann der Abhängigkeitsinjektionscontainer nun erfolgreich Abhängigkeiten auflösen und eine Instanz von IBloggerRepository bereitstellen, die automatisch als BloggerRepository instanziiert wird.

Hinweis: Verschiedene Pakete können ihre eigene Art der Registrierung von Diensten haben. Es wird empfohlen, immer die Dokumentation zu konsultieren, um spezifische Hinweise zu erhalten.

Das obige ist der detaillierte Inhalt vonWarum kann meine .NET Core MVC-App keinen registrierten Dienst in einen Controller 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