asp.net-mvc-4 – 在ASP.Net MVC 4和Autofac中注册全局过滤器
|
我有一个这样的过滤器: public class CustomFilterAttribute : ActionFilterAttribute,IAuthorizationFilter
{
public MyPropery Property { get; set; }
....
}
我需要为我的项目中的每个动作运行 我试图在GlobalFilters注册,但是我的属性没有被注入 我试过This solution注册我的过滤器,但没有被调用 有什么想法呢? 解决方法有一种在AutoFac中注册MVC全局过滤器的新方式。首先,从您的RegisterGlobalFilter中删除过滤器注册,因为我们将Autofac句柄添加到我们的控制器/动作而不是MVC。然后,注册您的容器如下: var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<MyProperty>().As<IProperty>();
builder.Register(c => new CustomFilterAttribute(c.Resolve<IProperty>()))
.AsActionFilterFor<Controller>().InstancePerHttpRequest();
builder.RegisterFilterProvider();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
请注意,通过将Controller类传递到扩展AsActionFilterFor()中,我们告诉AutoFac将此过滤器应用于从Controller类派生的所有类(在MVC中是所有控制器)。由于我们调用AsActionFilterFor()没有任何参数,我们也指定我们希望将过滤器应用于指定控制器中的所有操作。如果要将筛选器应用于选择控制器和操作,可以使用如下所示的lambda表达式: builder.Register(c => new CustomFilterAttribute(c.Resolve<IProperty>()))
.AsActionFilterFor<HomeController>(c => c.Index())
.InstancePerHttpRequest();
如果您的操作需要参数,请使用default关键字来指定: builder.Register(c => new CustomFilterAttribute(c.Resolve<IProperty>()))
.AsActionFilterFor<HomeController>(c => c.Detail(default(int)))
.InstancePerRequest();
请注意,您必须根据您注册的过滤器使用不同的扩展方法,以下是支持的过滤器类型: > AsActionFilterFor> AsAuthorizationFilterFor> AsExceptionFilterFor> AsResultFilterFor (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 无法加载文件或程序集’System.Web.WebPage
- ASP.NET MVC“组件”
- asp.net – IIS 7.5无法打开处理程序映射?
- LoginView中的ASP.NET LoginStatus不会触发LoggingOut事件
- asp.net-mvc – 没有控制器或操作名称的Asp.net mvc路由
- asp.net-mvc – ELMAH没有记录违规代码行号
- asp-classic – 如何检查VBScript中是否存在POST提交字段?
- asp.net – GetExternalLoginInfoAsync()loginInfo返回null
- 问题在ASP.NET 5(Core)中添加对类库项目的引用
- 配置 – ASP.NET Web Api:项目需要SQL Server Express
- asp.net – 什么原因导致“无法注销UpdatePanel”
- asp.net – 普通Web API或Web API和OData?
- asp.net-mvc – 用静态项绑定Html.DropDownList
- asp.net-mvc – 如何使用EF Code First解释为枚举
- asp.net-mvc-3 – 不支持使用相同的DbCompiledMo
- asp.net-mvc – 使用部分页面的PagedList.MVC中的
- ASP.NET调试与IIS超时
- asp.net-mvc-3 – 在ASP.NET MVC 3视图中渲染Sys
- 学习LINQ的资源?
- ASP.NET MVC3 HttpStatusCodeResult StatusDescr
