使用背景:用户请求控制器,资源过滤器根据用户请求的地址,查找对应的缓存,如果找到缓存,则返回结果,如果没有找到,则在后面的过滤器添加动作。
1.创建资源过滤器类,继承并实现IResourceFilter
2.实现请求进入时的操作。
public void OnResourceExecuted(ResourceExecutedContext context)
{
//结果返回时调用
}
public void OnResourceExecuting(ResourceExecutingContext context)
{
//从缓存读取信息
IMemoryCache cache = context.HttpContext.RequestServices.GetService<IMemoryCache>();
//请求路径作为缓存的Key
string path = context.HttpContext.Request.Path.ToString();
object value = null;
if (cache.TryGetValue(path, out value))
{
string result = value.ToString();
//如果有Result,则不会往执行后面的过滤器
context.Result = new ContentResult() { Content = result };
}
}
3.需要引用的缓存命名空间
using Microsoft.Extensions.DependencyInjection;
4.资源过滤器注册(全局)
services.AddMvc(m=> {
//实例注册方式:每个请求不会重新实例化
//m.Filters.Add(new CacheResourceFilter());
//类型注册方式:每个请求都会重新实例化
m.Filters.Add(typeof(CacheResourceFilter));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);