asp.net-mvc-4 – 在ASP.Net MVC 4和Autofac中注册全局过滤器
发布时间:2020-12-15 18:46:32 所属栏目:asp.Net 来源:网络整理
导读:我有一个这样的过滤器: public class CustomFilterAttribute : ActionFilterAttribute,IAuthorizationFilter{ public MyPropery Property { get; set; } ....} 我需要为我的项目中的每个动作运行 我试图在GlobalFilters注册,但是我的属性没有被注入 我试过
我有一个这样的过滤器:
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 – ascx和.cshtml有什么区别?
- asp.net-mvc – 绑定客户端模板中的两个字段,用于kendo网格
- asp.net-mvc – 从Asp.Net Mvc应用程序找不到DataContractJ
- asp.net – 如何在网格中按日期升序?
- asp.net-mvc – 设置MVC 3 rc1 Razor cshtml文件构建动作编
- asp.net-core – 从Controller传递信息到中间件
- asp.net-mvc – 如何让ASP.NET MVC在IIS 6中运行?
- asp.net-mvc – 在MVC中,部分视图是否继承了父视图的模型?
- asp.net-mvc-3 – MVC3 MapRoute,带斜杠的参数
- asp.net-web-api – 无法为Web API OData端点解析MapODataR
推荐文章
站长推荐
- asp.net MVC5,如何使用mysql数据库,使用MVC框架
- asp.net – 将网站置于维护模式?
- asp.net – 以编程方式将HTML转换为Markdown语法
- asp.net-web-api – ASP.NET核心WebAPI 404错误
- asp.net-mvc – 如何给Razor MVC中的共享布局模型
- asp.net – 如何知道为什么IIS应用程序池被回收
- ASP.NET TreeView:Checked更改后的PostBack?
- asp.net-mvc-2 – EditorFor – 传入字典的模型项
- asp.net-web-api – 自定义模型Binder不从Swagge
- [WCF 4.0新特性] 标准终结点与无(.SVC)文件服务激
热点阅读