Rumah >pembangunan bahagian belakang >C++ >Mengapa Apl MVC Teras .NET Saya Gagal Menyuntik Perkhidmatan Berdaftar ke dalam Pengawal?

Mengapa Apl MVC Teras .NET Saya Gagal Menyuntik Perkhidmatan Berdaftar ke dalam Pengawal?

Susan Sarandon
Susan Sarandonasal
2025-01-23 17:47:09195semak imbas

Why Does My .NET Core MVC App Fail to Inject a Registered Service into a Controller?

Penyelesaian kepada kegagalan suntikan pergantungan pengawal dalam aplikasi .NET Core MVC

Dalam aplikasi .NET Core MVC anda, ralat berlaku apabila cuba menyuntik BloggerRepository ke dalam BlogController dengan mesej berikut:

<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>

Mari analisa kod untuk memahami ralat ini:

Tahap gudang:

<code>public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }</code>

Pengawal:

<code>public class BlogController : Controller
{
    private readonly IBloggerRepository _repository;
    public BlogController(BloggerRepository repository) { ... }
}</code>

Startup.cs:

<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
Ralat

menunjukkan bahawa sistem suntikan kebergantungan tidak dapat menyediakan contoh BlogController untuk pembina BloggerRepository.

Masalahnya ialah pengawal menjangkakan kelas konkrit untuk BloggerRepository, manakala bekas suntikan kebergantungan diberitahu untuk mendaftarkan antara muka IBloggerRepository dengan pelaksanaan konkrit.

Penyelesaian:

Untuk menyelesaikan masalah ini, ubah suai pembina pengawal supaya ia menerima antara muka dan bukannya kelas konkrit:

<code>public BlogController(IBloggerRepository repository) { ... }</code>

Dengan pengubahsuaian ini, bekas suntikan kebergantungan kini boleh berjaya menyelesaikan kebergantungan dan menyediakan contoh IBloggerRepository yang akan secara automatik dijadikan sebagai BloggerRepository.

Nota: Pakej yang berbeza mungkin mempunyai cara tersendiri untuk mendaftar perkhidmatan. Adalah disyorkan untuk sentiasa merujuk dokumentasinya untuk panduan khusus.

Atas ialah kandungan terperinci Mengapa Apl MVC Teras .NET Saya Gagal Menyuntik Perkhidmatan Berdaftar ke dalam Pengawal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn