.NET Core MVC アプリがコントローラーにリポジトリの依存関係を注入しようとしたときにエラーが発生しました。エラーメッセージは次のとおりです:
<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
このエラーは、アプリケーションが BloggerRepository
コンストラクターに渡す BlogController
クラスのインスタンスを作成できないことを示します。 BloggerRepository
はスタートアップクラスに登録されていますが、
<code class="language-csharp">services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
問題は、コントローラー クラスが具体的な BloggerRepository
クラスを直接リクエストすることです。ただし、依存関係注入コンテナーが認識しているのは、IBloggerRepository
インターフェイスのインスタンスの作成方法だけです。このエラーを解決するには、次のインターフェイスを受け入れるようにコントローラーを調整する必要があります:
<code class="language-csharp">public BlogController(IBloggerRepository repository) { _repository = repository; }</code>
外部 NuGet パッケージの場合は、特定の登録要件がある場合があるため、必ずドキュメントを確認してください。たとえば、IHttpContextAccessor
に関するエラー メッセージを解決するには:
<code>Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' ...</code>
解決策は、カスタム拡張メソッドを使用することです:
<code class="language-csharp">services.AddHttpContextAccessor();</code>
以上が.NET Core MVC アプリケーションがリポジトリの依存関係の挿入に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。