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() 根据定义,错误处理程序是在操作的返回端运行的过滤器,因此它们的顺序是相反的. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 验证 – 在编辑页面上保存时忽略必需属性
- asp.net-mvc-3 – 从Razor _Layout.cshml访问Session对象
- asp.net-web-api – 如何配置Web API 2和结构图
- asp.net-mvc-3 – Apress Pro Asp.net MVC框架3 – SportsS
- asp.net – 通过使用Javascript将邮政编码传递到maps.googl
- asp.net – JS / CSS包括部分替换,Debug vs Release
- asp.net-mvc – MVC4捆绑使用Scripts.Render时速度慢
- asp.net-mvc – 使用没有ORM的ASP.NET MVC
- ASP.NET批量下载文件的方法
- asp.net-mvc – 如何将MVC 5 IdentityModels.cs移动到单独的
- asp.net-mvc – MVC ajax json post到控制器动作
- 在ASP.Net MVC中禁用会话状态每请求
- asp.net-mvc-3 – MVC:为此对象定义的无参数构造
- asp.net-mvc – ASP.NET MVC查看引擎解析顺序
- asp.net-mvc – 如何在asp.net mvc中检查模型验证
- asp.net – 剑道:网格中的ComboBox – 将选定组
- asp.net – SignalR 3的开发状况如何?
- ASP.NET MVC中%:和%=有什么区别?
- 将图表绘制到ASP.NET MVC 4(Razor,C#)网站
- asp.net-mvc – 在ASP.NET MVC中实现工作单元的方
