У меня есть cacheHelper.Когда я добавляю зависимость CacheHelper для запуска с «AddScoped», он работает.Но CacheHelper.cs
выполняется для каждого запроса.Итак, я конвертирую в «AddSingleton», как показано ниже.Но я получаю сообщение об ошибке, подобное этому: Невозможно использовать обслуживаемую область «MyProject.DataAccess.IUnitOfWork» из синглтона «MyProject.Caching.ICacheHelper» Как я могу исправить эту проблему?
Strartup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.AddScoped<IUnitOfWork, UnitOfWork>();
services.AddScoped<IJwtHelper, JwtHelper>();
services.AddScoped<IAuditHelper, AuditHelper>();
services.TryAdd(ServiceDescriptor.Singleton<IMemoryCache, MemoryCache>());
services.AddSingleton<ICacheHelper, CacheHelper>();
services.AddMvc();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
CacheHelper.cs
public class CacheHelper : ICacheHelper
{
private readonly IUnitOfWork unitOfWork;
public IMemoryCache Cache { get; }
public CacheHelper(IUnitOfWork unitOfWork, IMemoryCache cache)
{
this.unitOfWork = unitOfWork;
Cache = cache;
}
public void SetCommonCacheItems()
{
var cities = unitOfWork.CityRepo.GetAll();
Cache.Set("cities", cities);
string obj;
Cache.TryGetValue<string>("cities", out obj);
}
public string GetCities()
{
string obj;
Cache.TryGetValue<string>("cities", out obj);
return obj;
}
}