ホームページ > バックエンド開発 > C++ > 依存関係の挿入を使用すると、.NET Core MVC アプリで「サービスを解決できません」というメッセージが表示されるのはなぜですか?

依存関係の挿入を使用すると、.NET Core MVC アプリで「サービスを解決できません」というメッセージが表示されるのはなぜですか?

Barbara Streisand
リリース: 2025-01-23 17:51:08
オリジナル
191 人が閲覧しました

Why Does My .NET Core MVC App Throw

.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 インスタンスを作成できないことを示します。

問題分析

次のコンポーネントが関係します:

  • リポジトリ: IBloggerRepository インターフェイスとその実装 BloggerRepository。
  • コントローラー: BloggerRepository を使用する BlogController。
  • Startup.cs: 依存関係注入サービスの構成を登録します。

Startup.cs ファイルで、IBloggerRepository の依存関係を登録しました:

services.AddScoped<IBloggerRepository, BloggerRepository>();
ログイン後にコピー

これは、アプリケーションが IBloggerRepository を必要とするたびに、BloggerRepository インスタンスを作成してそれを注入することを意味します。

ただし、BlogController はコンストラクターで具体的な BloggerRepository クラスを直接リクエストします。

public BlogController(BloggerRepository repository)
ログイン後にコピー

これにより、インターフェイスが要求されたときに具象クラスのインスタンスを作成する方法がわからないため、依存関係注入コンテナーが失敗します。

解決策

この問題を解決するには、IBloggerRepository インターフェイスを受け入れるように BlogController のコンストラクターを変更します。

public BlogController(IBloggerRepository repository)
ログイン後にコピー

インターフェイスを受け入れることで、依存関係注入コンテナーは依存関係を正常に解決し、BlogController インスタンスを作成できるようになります。

その他の指示

場合によっては、特定のタイプに対してカスタム登録方法を使用する必要がある場合があります。たとえば、IHttpContextAccessor サービスを登録するには、次を使用します:

services.AddHttpContextAccessor();
ログイン後にコピー

カスタム登録が必要かどうかを判断するには、常に外部 NuGet パッケージのドキュメントを参照してください。

以上が依存関係の挿入を使用すると、.NET Core MVC アプリで「サービスを解決できません」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート