3
당신은 당신의 시작에서 컨트롤러Asp.Net 코어 : ASP.NET 코어에서 사용 메모리 캐시 외부 컨트롤러
에서 메모리 캐시에 액세스 할 수 매우 쉽게 추가의 :에서 다음
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
}
하고 컨트롤러
[Route("api/[controller]")]
public class MyExampleController : Controller
{
private IMemoryCache _cache;
public MyExampleController(IMemoryCache memoryCache)
{
_cache = memoryCache;
}
[HttpGet("{id}", Name = "DoStuff")]
public string Get(string id)
{
var cacheEntryOptions = new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(1));
_cache.Set("key", "value", cacheEntryOptions);
}
}
하지만 컨트롤러 외부에서 동일한 메모리 캐시에 어떻게 액세스 할 수 있습니까? 예. 내가 맡은 일정 잡힌 작업이 HangFire에 의해 시작됩니다. HangFire 예약 된 작업을 통해 시작하는 내 코드 내에서 memorycache에 어떻게 액세스합니까?
public class ScheduledStuff
{
public void RunScheduledTasks()
{
//want to access the same memorycache here ...
}
}
감사합니다 당신의 도움 비탈리이 당신이
ConfigureServices
방법ScheduledStuff
인스턴스를 구성해야한다는 것을 의미합니다. 이제 문제는 어떻게 RunScheduledTasks 메서드를 시작할 수 있습니까? memoryCache 매개 변수가 필요합니다. 여기에 오류 'scheduledStuff.RunScheduledTasks (-'<오류, \t CS7036 \t 필요한 형식 매개 변수의 'memoryCache' 'ScheduledStuff.ScheduledStuff (IMemoryCache)' 'ScheduledStuff scheduledStuff = 새로운 ScheduledStuff()에 해당 주어진 인수를가 없습니다); ' – SpeedBird527당신은 코드에서'SheduledStuff' 인스턴스를 생성해서는 안됩니다. 대신에 DI 컨테이너에서 그것을 얻어야합니다 - Controller 나'HttpContext.RequestServices'에서 의존성으로 정의해야합니다. –