Public classEwhandleerrorattribute:handleerrorattribute { Public Override voidonexception (Exceptioncontext filtercontext) {if(ictconfiguration.debug) {Base. Onexception (Filtercontext); return; } if(filtercontext.exceptionhandled) {return; } if(filterContext.HttpContext.Response.IsRequestBeingRedirected) {return; } varHttpcode =NewHttpException (NULL, Filtercontext.exception). Gethttpcode (); if(!Exceptiontype.isinstanceoftype (filtercontext.exception)) { return; } if(NewHttpException (NULL, filtercontext.exception). Gethttpcode ()! = -) { return; } exceptionhelper.logexception (Filtercontext.exception, httpcontext.current); BOOLIsajaxcall =string. Equals ("XMLHttpRequest", filtercontext.httpcontext.request.headers["X-requested-with"], stringcomparison.ordinalignorecase); if(isajaxcall) {stringMessage =FilterContext.Exception.Message; if(filtercontext.exception ishttprequestvalidationexception) {Message="contains illegal characters"; } Filtercontext.result=NewJsonresult () {Jsonrequestbehavior=Jsonrequestbehavior.allowget, Data=New{Succeed=false, ret=Httpcode, msg=message}}; } Else { varControllername = (string) filtercontext.routedata.values["Controller"]; varActionName = (string) filtercontext.routedata.values["Action"]; varModel =NewHandleerrorinfo (filtercontext.exception, Controllername, ActionName); Filtercontext.result=NewViewResult () {ViewName=View, Mastername=Master, ViewData=Newviewdatadictionary (model), TempData=FilterContext.Controller.TempData}; FilterContext.HttpContext.Response.Redirect ("/500.html"); } filtercontext.exceptionhandled=true; FilterContext.HttpContext.Response.Clear (); FilterContext.HttpContext.Response.TrySkipIisCustomErrors=true; FilterContext.HttpContext.Server.ClearError (); } }
Global Register Filter
Public Static void registerglobalfilters (globalfiltercollection filters) { filters. ADD (new1); Filters. ADD (new2); }
Handleerrorattribute Feature Usage