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
Susan SarandonOriginal
2025-01-23 17:47:09194Durchsuche

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>

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

Lagerebene:

<code>public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }</code>

Verantwortlicher:

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

Startup.cs:

<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
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>

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!

Stellungnahme:
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