Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired) - Hatası



Eğer başlıktaki hatayı alıyorsanız, katmanlı mimari ile oluşturduğumuz projenizin Bussines katmanında ekli olan service ve DataAcsess katmanında yer alan dal classlarını startup.cs e eklemediğiniz anlamına gelir. 

Startup.cs te yer alan 'public void ConfigureServices(IServiceCollection services)'  başlığı altına   "services.AddScoped<IKategoriService, KategoriManeger>()" ve "services.AddScoped<IKategoriDal, EfKategoriDal>()" eklemeniz yeterli olacaktır. 

Burada Kategori olan benim hazırladığım örnek. Siz kendi service ve dal classlarınızı eklemeniz işinizi görecektir.


Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired) hatası, Microsoft.Extensions.DependencyInjection kütüphanesinin bir parçası olan ActivatorUtilities sınıfının GetService metodunu kullanırken meydana gelen bir hata olabilir. Bu hatanın sebebi, uygulamanızda bir hizmetin (service) kaydının yapılmamış olması veya hizmetin doğru bir şekilde kaydedilmemiş olmasıdır.


Hata mesajını daha iyi anlamak için, hatayı daha iyi incelemek gerekir. Eğer hatayı daha iyi anlamak için daha fazla bilgiye ihtiyacınız varsa, hatanın tam olarak nerede ve hangi koşullar altında meydana geldiğini bildirirseniz size daha detaylı bir cevap verebilirim.


Genel olarak, bu hatayı çözmek için aşağıdaki adımları izleyebilirsiniz:


Uygulamanızda kullandığınız hizmetin (service) doğru bir şekilde kaydedildiğinden emin olun. Bu, Startup sınıfınızın ConfigureServices metodunda services.AddXXX() şeklinde bir satırın bulunması gerektiği anlamına gelir. Örneğin, bir veritabanı erişimi sağlayan bir hizmet kullanıyorsanız, services.AddDbContext<XXXContext>() satırının bulunması gerekir.


Uygulamanızda kullandığınız hizmetin (service) doğru bir şekilde başlatıldığından emin olun. Bu, Startup sınıfınızın Configure metodunda app.UseXXX() şeklinde bir satırın bulunması gerektiği anlamına gelir. Örneğin, bir veritabanı erişimi sağlayan bir hizmet kullanıyorsanız, app.UseDbContext<XXXContext>() satırının bulunması gerekir.


Uygulamanızda kullandığınız hizmetin (service) bir örneğini almak için ActivatorUtilities.GetService metodunu doğru bir şekilde kullandığınızdan emin olun. 

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ile Uyarı Mesajları Vermek (msgbox)

Asp.Net ile T.C. Kimlik Doğrulama (Mernis) Web Service ile

Asp.Net Eval Kullanımı