缓存
内存中,键值对集.
使用步骤
1.注册
 记得注册为单例;
2.注入
3.使用
存:
memoryCache.Set(path,context.Result as ObjectResult);
取:
if( memoryCache.TryGetValue(Path,out object value) )
{
   context.Result = value as ObjectResult;
}
内存中,键值对集.
1.注册
 记得注册为单例;
2.注入
3.使用
存:
memoryCache.Set(path,context.Result as ObjectResult);
取:
if( memoryCache.TryGetValue(Path,out object value) )
{
   context.Result = value as ObjectResult;
}
Context中包含:
WebApi 接收 Request,经历管道模型后,进入MvcFilter,后传回Response。
.Net中Filter都是以特性的形式存在,有如下五类:
常做权限验证;
常做缓存;
常做模型验证、日志记录;
异常捕获;
只能捕获ActionFilter及ActionExecution时的报错.
 OnException(ExceptionContext context)
 {
  //记录日志
 }
处理返回结果。
仅Result不为空时才能够执行,若短路器执行或管道中抛出异常,则会跳过ResultFilter.
将特性注解在方法上;
将特性注解在类上;
在注册Controller时使用委托注册,如:
Builder.Service.AddController( o => o.Filter.Add<CumFilter>());
## 优先级
不同类型Filter按管道模型顺序执行,相同类型的 全局>类>方法;
也可以再注册时指定 add
当Context.Result被赋值时,将会跳过后续的管线步骤,直接返回结果,这一机制叫做短路器.
在ResourceFilter中:
public class ResourceFilter : Attribute, IResourceFilter
{
    private Static Dictionary< string, object > _dirCache = new Dictionary< string, object >();
    public void OnResourceExecuting(esourceExecutingContext context)
    {
        var path = context.HttpContext.Request.Path;
        _dirCache[path] = context.Result as ObjectReslut;
    }
    public void OnResourceExxcuted(ResourceExecutedContext context)
    {
        var path = context.HttpContext.Request.Path;
        if( _dirCache.ContainsKey(path) ) 
        {
            context.Result = _dirCache[path]  as ObjectReslut;
        }
    }
}
[TypeFilter(typeOf(xxxActionFilterAttribute))]
  [ServiceFilter(typeOf(xxxActionFilterAttribute))] // 使用此条需在build中注册改过滤器及其需要注入的参数;
typeof(xxx).isAssignable(typeof(xxx));//两个类是否有继承/实现关系,存在开放型泛型不相等。