Method class
/// <summary> ///running the Monitoring class/// </summary>[AttributeUsage (AttributeTargets.Class | AttributeTargets.Method, AllowMultiple =false)] Public classStatisticstrackerattribute:actionfilterattribute {Private ReadOnly stringKey ="_thisonactionmonitorlog_"; #regionAction Run monitoring Public Override voidonactionexecuting (ActionExecutingContext filtercontext) {monitorlog Monlog=NewMonitorlog (); Monlog.executestarttime= Convert.todatetime (DateTime.Now.ToString ("YYYY/MM/DD HH:mm:ss.ffff", Datetimeformatinfo.invariantinfo)); Monlog.controllername= filtercontext.routedata.values["Controller"] as string; Monlog.actionname= filtercontext.routedata.values["Action"] as string; //get custom properties for action varattributes = FilterContext.ActionDescriptor.GetCustomAttributes (typeof(Actiondescribeattribute),true); if(Attributes! =NULL&& attributes. Length >0) {Actiondescribeattribute myattribute= attributes[0] asActiondescribeattribute; if(MyAttribute! =NULL) {monlog.actioninstructions=Myattribute.displayname; }} Filtercontext.controller.viewdata[key]=Monlog; Base. OnActionExecuting (Filtercontext); } Public Override voidonactionexecuted (ActionExecutedContext filtercontext) {monitorlog Monlog= Filtercontext.controller.viewdata[key] asMonitorlog; Monlog.executeendtime= Convert.todatetime (DateTime.Now.ToString ("YYYY/MM/DD HH:mm:ss.ffff", Datetimeformatinfo.invariantinfo)); Monlog.formcollections= FilterContext.HttpContext.Request.Form;//data submitted by Form formMonlog.querycollections = filterContext.HttpContext.Request.QueryString;//URL ParametersMonlog.absoluteuri =FilterContext.HttpContext.Request.Url.AbsoluteUri; Base. OnActionExecuted (Filtercontext); } #endregion #regionView View generation time monitoring Public Override voidonresultexecuting (ResultExecutingContext filtercontext) {monitorlog Monlog= Filtercontext.controller.viewdata[key] asMonitorlog; Monlog.resultexecutestarttime= Convert.todatetime (DateTime.Now.ToString ("YYYY/MM/DD HH:mm:ss.ffff", Datetimeformatinfo.invariantinfo)); Base. Onresultexecuting (Filtercontext); } Public Override voidonresultexecuted (ResultExecutedContext filtercontext) {monitorlog Monlog= Filtercontext.controller.viewdata[key] asMonitorlog; Monlog.resultexecuteendtime= Convert.todatetime (DateTime.Now.ToString ("YYYY/MM/DD HH:mm:ss.ffff", Datetimeformatinfo.invariantinfo)); //Write LogFilterContext.Controller.ViewData.Remove (Key); Monlog.getloginfo (); Base. Onresultexecuted (Filtercontext); } #endregion } /// <summary> ///program Run error collector/// </summary>[AttributeUsage (AttributeTargets.Class, inherited =true, AllowMultiple =false)] Public classLogexceptionattribute:handleerrorattribute { Public Override voidonexception (Exceptioncontext filtercontext) {if(!filtercontext.exceptionhandled) {Try { stringSform = This. Getcollections (FilterContext.HttpContext.Request.Form); stringSquery = This. Getcollections (filterContext.HttpContext.Request.QueryString); stringControllername =string. Format ("{0}controller", filtercontext.routedata.values["Controller"] as string); stringActionName = filtercontext.routedata.values["Action"] as string; stringMessage =string. Format (@"An exception occurred while executing controller[{0}] action[{1}]. Exception type: {2} <br> exception content: {3} <br> method to throw exception: {4} <br> Throw Exception Source: {5} <br> parameter: {6}", Controllername, ActionName, filtercontext.except Ion. GetType (). Name, FilterContext.Exception.Message, FilterContext.Exception.TargetSite , FilterContext.Exception.Source+FilterContext.Exception.StackTrace, Sform+squery); //Record LogLoggerbusiness.writelog (Message,"Web program run error"); } Catch(Exception) {}Base. Onexception (Filtercontext); } } /// <summary> ///get post or get parameters/// </summary> /// <param Name= "Collections" ></param> /// <returns></returns> Public stringgetcollections (NameValueCollection collections) {stringParameters =string. Empty; if(Collections = =NULL|| Collections.count = =0) { returnParameters; } foreach(stringKeyinchcollections.keys) {Parameters+=string. Format ("{0}:{1};", Key, Collections[key]); } if(!string. Isnullorwhitespace (Parameters) && Parameters.endswith (";") ) {Parameters= Parameters.substring (0, Parameters.length-1); } returnParameters; } } /// <summary> ///Description Property/// </summary>[AttributeUsage (AttributeTargets.Class | AttributeTargets.Method, AllowMultiple =false)] Public classActiondescribeattribute:attribute { Public stringDisplayName {Get;Set; } PublicActiondescribeattribute () { This. DisplayName =""; }View Code
How to use
1 [Statisticstrackerattribute]2 [Logexception]3 Public classManagecontroller:controller4 {5 //6 //GET:/manage/7[Actiondescribe (Displayname="Load Home")]8 Publicactionresult Index ()9 {Ten returnView (); One } A}View Code
. NET MVC run monitoring and error trapping