autofacc属性注入注册适用于AuthorizeAttribute,但不适用于ActionFilterAttribu

本文关键字:适用于 不适用 ActionFilterAttribu AuthorizeAttribute 注入 注册 autofacc 属性 | 更新日期: 2023-09-27 18:06:17

我有一些自定义的MVC属性

我正在使用autofac来配置属性并注入它们

我有以下代码
 builder.RegisterType<LogWrapper>().As<ILogger>().SingleInstance();
 builder.RegisterFilterProvider();

  [AttributeUsage(AttributeTargets.Method)]
  public class MyAttribute : ActionFilterAttribute
  {    
    public ILogger Logger { get; set; }
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
    Logger.Log("Test");
    }
  } 
  public class MyAttribute2 : AuthorizeAttribute
  {
    public ILogger Logger { get; set; }
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
    Logger.Log("Test 2");
        return true;
    }
   }

属性是为MyAttribute2注入的,而不是我的属性

autofacc属性注入注册适用于AuthorizeAttribute,但不适用于ActionFilterAttribu

原因是MyAttribute被设置为global.asax中的全局过滤器

所以它需要下面的代码
 builder.Register(c => new MyAttribute())
                  .PropertiesAutowired()
                  .AsActionFilterFor<Controller>().InstancePerHttpRequest();