Spe*_*527 8 c# asp.net memorycache .net-core asp.net-core
在ASP.NET Core中,它很容易从控制器访问您的内存缓存
在你的创业公司中你添加:
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
}
Run Code Online (Sandbox Code Playgroud)
然后从你的控制器
[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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如何在控制器外部访问相同的内存缓存.例如.我有一个由HangFire发起的计划任务,如何从我的代码中通过HangFire计划任务访问内存缓存?
public class ScheduledStuff
{
public void RunScheduledTasks()
{
//want to access the same memorycache here ...
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里有点晚了,但只是想补充一点以节省某人的时间。您可以在应用程序的任何位置通过 HttpContext 访问 IMemoryCache
var cache = HttpContext.RequestServices.GetService<IMemoryCache>();
Run Code Online (Sandbox Code Playgroud)
请确保在启动时添加 MemeoryCache
services.AddMemoryCache();
Run Code Online (Sandbox Code Playgroud)
内存缓存实例可以注入到DI容器控制的任何组件中;这意味着您需要ScheduledStuff在ConfigureServices方法中配置实例:
public void ConfigureServices(IServiceCollection services) {
services.AddMemoryCache();
services.AddSingleton<ScheduledStuff>();
}
Run Code Online (Sandbox Code Playgroud)
并在ScheduledStuff构造函数中将IMemoryCache声明为依赖项:
public class ScheduledStuff {
IMemoryCache MemCache;
public ScheduledStuff(IMemoryCache memCache) {
MemCache = memCache;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4666 次 |
| 最近记录: |