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
Lepaskan: 2025-01-23 17:47:09
asal
241 orang telah melayarinya

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>
Salin selepas log masuk

Mari analisa kod untuk memahami ralat ini:

Tahap gudang:

<code>public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }</code>
Salin selepas log masuk

Pengawal:

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

Startup.cs:

<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
Salin selepas log masuk
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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan