دسترسی به سرویس scoped در سرویس singleton در دات نت
mohsen•11 ماه قبل•11 ماه قبل
ارسال شده در
mohsenفرض کنید که ما یک ورکر سرویس درست کردیم و می خواهیم سرویسی که به صورت scoped رجیستر شده است را به کلاس Worker که singleton است تزریق کنیم. خطای زیر را دریافت می کنیم:
Some services are not able to be constructed
(Error while validating the service descriptor 'ServiceType:
Microsoft.Extensions.Hosting.IHostedService Lifetime:
Singleton ImplementationType: Test.Worker': Cannot consume scoped service 'Test.
CustomDbContext' from singleton 'Microsoft.Extensions.Hosting.IHostedService'.)
راه حل اینه که ما به جای تزریق مستقیم سرویس به کلاس Worker، سرویس IServiceProvider را تزریق کنیم و جایی که نیازمند استفاده از سرویس scoped هستیم، آن را بوسیله کد زیر ایجاد کنیم:
using var scope = _serviceProvider.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<CustomDbContext>();
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!