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>
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>
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>
Ü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>
Die Lösung besteht darin, eine benutzerdefinierte Erweiterungsmethode zu verwenden:
<code class="language-csharp">services.AddHttpContextAccessor();</code>
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!