ホームページ >バックエンド開発 >C++ >.NET Core MVC アプリケーションがリポジトリの依存関係の挿入に失敗するのはなぜですか?

.NET Core MVC アプリケーションがリポジトリの依存関係の挿入に失敗するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-23 18:09:12722ブラウズ

.NET Core MVC アプリの依存関係挿入エラー: インターフェイスの依存関係を解決できません

問題の説明

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

Why Does My .NET Core MVC Application Fail to Inject a Repository Dependency?

以上が.NET Core MVC アプリケーションがリポジトリの依存関係の挿入に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。