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注入的,而不是我的属性
原因是MyAttribute被设置为global.asax中的全局过滤器
所以它需要下面的代码 builder.Register(c => new MyAttribute())
.PropertiesAutowired()
.AsActionFilterFor<Controller>().InstancePerHttpRequest();