ASP.NET Core で Web アプリケーションを開発中に DI の解決に失敗し、以下のようなエラーが表示されました。
InvalidOperationException: Cannot consume scoped service from singleton
これはスコープの指定がおかしいことを意味しています。
具体的には、Singleton
のクラスに Scoped
または Transient
のクラスを DI している場合に発生するようです。
詳しくは以下のページで解説されています。
私の場合は、シングルトンのクラスに DbContextOptions
を DI していたのが原因でした。
解決方法については明示されていませんが、そもそもこのような状況に陥ることがよくないので、アプリケーションの設計自体を見直すべきかと思います。