asp.net-mvc – 在ControllerInstanceFilterProvider的Filters之
我遇到了一个奇怪的行为,但我不确定我是否在这里正确的轨道.
我有一个控制器,它覆盖了Controller基类的OnException方法. public class ControllerFiltersController : Controller { public ActionResult Index() { throw new NotImplementedException(); } protected override void OnException(ExceptionContext filterContext) { Trace.TraceInformation( "ControllerFiltersController Exception: " + DateTime.Now.ToString("hh:mm:ss.fff") ); } } 我还有一个自定义的ExceptionFilter,如下所示: public class HandleErrorCustom : IExceptionFilter { public void OnException(ExceptionContext filterContext) { Trace.TraceInformation( "HandleErrorCustom Exception Message: " + DateTime.Now.ToString("hh:mm:ss.fff") ); } } 然后,我将其注册为全局过滤器: public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorCustom()); } 我期望控制器实例过滤器在全局过滤器之前运行,因为ControllerInstanceFilterProvider提供的过滤器顺序是Int32.MinValue,它们的范围是FilterScope.First. 正如此处所述:ASP.NET MVC 3 Service Location,Part 4: Filters 但结果却不同:
这是一个ASP.NET MVC 4应用程序,我不知道任何影响ASP.NET MVC 3的过滤器排序行为的更改.我在这里缺少什么? 解决方法
这是预期的行为.
过滤器排序取决于信息流动的方向.如果信息流入动作,那么订单就像您期望的那样;如果信息流回动作,那么订单将被撤销. 例如,假设您按此顺序有三个过滤器:F1,F2,F3.假设这些是动作过滤器(意思是,它们正在侦听ActionExecuting和ActionExecuted).系统将运行它们的顺序如下: F1.ActionExecuting() F2.ActionExecuting() F3.ActionExecuting() Action() F3.ActionExecuted() F2.ActionExecuted() F1.ActionExecuted() 根据定义,错误处理程序是在操作的返回端运行的过滤器,因此它们的顺序是相反的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用MVC和ASP.NET身份认证网址
- ASP.NET——总结
- asp.net – 如何处理在IIS上运行的网站的计划任务?
- asp.net-mvc-4 – 从.net 4升级到4.5会破坏Javascript中的H
- Asp.Net Cache缓存使用代码
- asp.net-mvc – 如何为所有控制器编写动作过滤器
- asp.net – Visual Studio – 为什么.ASPX文件比.ASPX.CS文
- asp.net-web-api – 在WebAPI中的TaskScheduler.Unobserved
- asp.net-mvc – 在mvc4中的下拉列表更改事件中提交表单
- asp.net – 拥有专用应用程序池,将Web应用程序保留在一个默
- asp.net-ajax – Ajax脚本管理器和母版页
- ASP.NET Web API自身对CORS的支持:从实例开始
- asp.net菜单skiplink
- asp.net – 您在实施/使用WebDAV方面有哪些经验?
- 深蓝词库转换1.9发布——支持英库拼音
- asp.net-mvc – EntityFramework.SqlServer未在W
- 反射及LINQ结果集转换dataTable并序列化 将Da
- asp.net-mvc – 带有HTML5语义标记的MVC4项目Htm
- ASP.NET第一次访问慢的解决方法(MVC,Web Api)
- asp.net – AsyncPostBackTrigger找不到LinkBut?