Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter
http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html
Global.asax
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class CheckLogin : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Session != null) { if (filterContext.HttpContext.Session.IsNewSession) { //LogFormatHelper.LogRequestParams("filterContext.HttpContext.Session.IsNewSession"); filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = "Account", Action = "Login" })); } } } }
Global.asax
protectedvoid Application_Start()
{
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class LogAction : ActionFilterAttribute { private string actionName = string.Empty; private Stopwatch sw = null; public override void OnActionExecuting(ActionExecutingContext filterContext) { sw = Stopwatch.StartNew(); actionName = filterContext.ActionDescriptor.ActionName; string function = actionName + " Start..."; if (filterContext.ActionParameters.Count == 0) { LogFormatHelper.LogRequestParams(function); } else { object[] objs = new object[filterContext.ActionParameters.Count]; int i = 0; foreach( var dic in filterContext.ActionParameters){ objs[i++] = dic.Value; } LogFormatHelper.LogRequestParams(function, objs); } base.OnActionExecuting(filterContext); } public override void OnResultExecuted(ResultExecutedContext filterContext) { base.OnResultExecuted(filterContext); string function = actionName + " End"; StringBuilder sb = new StringBuilder(); foreach (var key in filterContext.RouteData.Values.Keys) { sb.AppendFormat("{0} = {1}", key, filterContext.RouteData.Values[key]).AppendLine(); } string str = filterContext.RouteData.Values.ToString(); LogFormatHelper.LogRequestParams(function, sw.Elapsed , sb.ToString() ); if (filterContext.Exception != null) { LogFormatHelper.LogServiceError(filterContext.Exception, actionName); } } }
MVC系统过滤器、自定义过滤器
http://www.cnblogs.com/kissdodog/archive/2013/05/21/3090513.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!