标签:
一、MVC的异常过滤器
/// <summary> /// 自定义的MVC异常过滤器 /// 可以在Controller或Action上单独使用,也可直接注册为全局过滤器 /// </summary> publicclassMVCExceptionFilterAttribution:HandleErrorAttribute { publicoverridevoidOnException(ExceptionContext filterContext) { base.OnException(filterContext); //标示当前异常已经被处理 //如果不手动设置为false,则异常会被Application_Error事件捕获,并可能显示到客户端 filterContext.ExceptionHandled=true; filterContext.Result=newContentResult(){Content="MVC Error"}; } }
protectedvoidApplication_Start() { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); //注册全局的自定义MVC异常过滤器 GlobalFilters.Filters.Add(newMVCExceptionFilterAttribution()); }
/// <summary> /// 处理Asp.Net中的异常 /// Controller中未处理的异常会被这里捕获 /// </summary> publicvoidApplication_Error(object sender,EventArgs e) { var exception =Server.GetLastError(); //处理异常 }
/// <summary> /// WebApi异常过滤器 /// 可以在Controller或Action上单独使用,也可直接注册为全局过滤器 /// </summary> publicclassWebApiExceptionFilterAttribution:ExceptionFilterAttribute { publicoverridevoidOnException(HttpActionExecutedContext actionExecutedContext) { base.OnException(actionExecutedContext); actionExecutedContext.Response=newSystem.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK){ReasonPhrase="api error"}; } }
protectedvoidApplication_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); //注册MVC中的过滤器 详见MVCExceptionFilter项目示例 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //注册一个自定义的全局WebApi异常过滤器 GlobalConfiguration.Configuration.Filters.Add(newWebApiExceptionFilterAttribution()); }
/// <summary> /// 处理Asp.Net中的异常 /// Controller中未处理的异常会被这里捕获 /// 但ApiController中的异常不会被捕获 /// </summary> publicvoidApplication_Error(object sender,EventArgs e) { var exception =Server.GetLastError(); //处理异常 }
标签:
原文地址:http://www.cnblogs.com/mstmdev/p/5471099.html