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>
-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!