成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET MVC自定義過濾屬性實現log功能

開發 后端
本文將為大家介紹ASP.NET MVC自定義過濾屬性實現Enterprise的log功能,希望對大家用好MVC有所幫助。

51CTO向您推薦《ASP.NET MVC框架視頻教程》,希望通過本教程能讓大家更好的理解ASP.NET MVC。

現在的企業級開發項目,特別是網站一般都會用到log功能,想想大部分會用Enterprise Logging Application Block 的功能 或者自己寫一個組件,記錄系統日志事件,更好的跟蹤了解系統運行情況, 現用ASP.NET MVC 的過濾屬性實現log功能!

ASP.NET MVC的filter 是一個屬性,可以應用到controller 后者action.當Controller或者action method 被調用時,ASP.NET MVC的filter在調用執行前后會被觸發。 先看下當Control 里面的action 被調用時的利用繼承,自定義類log的效果圖:

   LOG的效果圖 

要實現上面的效果,現自定義一個類LogMessageAttribute,LogMessageAttribute繼承接口IActionFilter ,IResultFilter,也可以選擇性的繼承重寫類FilterAttribute。

IActionFilter interface 定義為:

  1. public interface IActionFilter  
  2. {  
  3.     // Methods  
  4.     void OnActionExecuted(ActionExecutedContext filterContext);  
  5.     void OnActionExecuting(ActionExecutingContext filterContext);  

OnActionExecuting :在Controller 里面的action method 調用之前運行

OnActionExecuted:在Controller 里面的action method 調用之后運行,但是在IResultFilter接口的OnResultExecuting方法執行之前

IResultFilter interface定義為:

  1. public interface IResultFilter  
  2. {  
  3.     // Methods  
  4.     void OnResultExecuted(ResultExecutedContext filterContext);  
  5.     void OnResultExecuting(ResultExecutingContext filterContext);  

OnResultExecuting:在Controller 里面的action method調用處理玩前執行.
OnResultExecuted:在Controller 里面的action method調用處理玩后執行.

接下來是重頭戲:LogMessageAttribute自定義類

  1. [AttributeUsage(AttributeTargets.Class |AttributeTargets.Method ,Inherited=true ,AllowMultiple=true )]  
  2.     public class LogMessageAttribute:FilterAttribute,IActionFilter,IResultFilter   
  3.     {     
  4.         /// <summary>  
  5.         /// <param name="LogName ">日志文件路徑</para>  
  6.         /// </summary>  
  7.         public string LogName { getset; }  
  8.  
  9.    
  10.  
  11.        /// <summary>  
  12.        /// 記錄時間,系統版本,當前線程ID 等記錄  
  13.        /// </summary>  
  14.        /// <param name="controller"></param>  
  15.        /// <param name="action"></param>  
  16.        /// <param name="message"></param>  
  17.         public void LogMessage(string controller, string action, string message)  
  18.         {  
  19.             if (!string.IsNullOrEmpty(LogName))  
  20.             {  
  21.                   
  22.  
  23.                TextWriter writer = new StreamWriter(LogName, true);  
  24.                writer.WriteLine("################# Begin #################");  
  25.                writer.WriteLine("Time:[{0}]",DateTime.Now.ToString("yyyy-MM-dd- hh:mm:ss"));  
  26.                writer.WriteLine("Controller:{0}",controller);  
  27.                writer.WriteLine("Action:{0}",action);  
  28.                writer.WriteLine("Message:{0}",message);  
  29.                writer.WriteLine("Operating System version is:{0}",System.Environment.OSVersion.Version.ToString());  
  30.                writer.WriteLine("Current Thread ID is:{0}",AppDomain.GetCurrentThreadId());  
  31.                writer.WriteLine("############### Over ###############");  
  32.                writer.Close();   
  33.  
  34.             }  
  35.         }  
  36.         public void OnActionExecuting(ActionExecutingContext filterContext)  
  37.         {  
  38.             LogMessage(filterContext.RouteData.Values["controller"].ToString(),  
  39.                 filterContext.RouteData.Values["action"].ToString(),  
  40.                 "Action exeuting...");  
  41.         }  
  42.         public void OnActionExecuted(ActionExecutedContext filterContext)  
  43.         {  
  44.             LogMessage(filterContext.RouteData.Values["controller"].ToString(),  
  45.                 filterContext.RouteData.Values["action"].ToString(),  
  46.                 "Action executed.");  
  47.         }  
  48.         public void OnResultExecuting(ResultExecutingContext filterContext)  
  49.         {  
  50.             LogMessage(filterContext.RouteData.Values["controller"].ToString(),  
  51.                 filterContext.RouteData.Values["action"].ToString(),  
  52.                 "Result executing...");  
  53.         }  
  54.         public void OnResultExecuted(ResultExecutedContext filterContext)  
  55.         {  
  56.             LogMessage(filterContext.RouteData.Values["controller"].ToString(),  
  57.                   filterContext.RouteData.Values["action"].ToString(),  
  58.                   "Result executed");  
  59.         }  
  60.     }  

自定義好LogMessageAttribute類,應用到Controller或者action的屬性。在Controller 正在執行,或者呈現一個View,一個HTTP請求數據時,就會在日志文件記錄一些日志.

在項目的Controller里面應用自定義的屬性

  1. [Logging(LogName = @"D:\Project\Project\MVCProject\sky.ExtendMVCFramework\sky.ExtendMVCFramework\Log.log")]  
  2.      public ActionResult DesplayEmployee()  
  3.      {  
  4.          ViewData["Message"] = "Our employees welcome you to our site!";  
  5.          List<Employee> employees = new List<Employee>  
  6.           {  
  7.               new Employee {  
  8.                   FirstName="sky",  
  9.                   LastName="yang",  
  10.                   Email = "weflytotti@163.com",  
  11.                   Department ="Development" 
  12.               },  
  13.               new Employee {  
  14.                   FirstName="sky",  
  15.                   LastName="yang",  
  16.                   Email = "weflytotti@163.com",  
  17.                   Department ="Development" 
  18.               }  
  19.           };  
  20.          return View(employees);  
  21.      }  

運行程序,正如文章開始所看到的截圖!

總結:自定義ASP.NET MVC 的過濾屬性實現自己想要的功能只需要繼承IActionFilter ,IResultFilter。

原文標題:ASP.NET MVC 自定義過濾屬性實現Enterprise的log功能

鏈接:http://www.cnblogs.com/skyyang/archive/2010/04/30/1724580.html

【編輯推薦】

  1. MVC架構模式為什么這樣“紅”?
  2. 專訪微軟MVP衣明志:走進ASP.NET MVC 2框架開發
  3. 淺談ASP.NET MVC中TempData的實現機制
  4. ASP.NET MVC中使用View Model分離領域模型
責任編輯:彭凡 來源: 博客園
相關推薦

2009-08-06 17:13:56

ASP.NET自定義控

2009-08-04 13:35:16

ASP.NET自定義樣

2009-11-24 15:11:21

ASP.NET MVC

2009-07-22 15:27:39

ASP.NET MVC自定義路由

2009-07-22 16:02:39

ASP.NET MVCPagedList

2009-07-28 09:32:41

ASP.NET自定義控

2009-08-10 14:16:59

ASP.NET自定義控

2009-07-31 10:23:09

ASP.NET源碼DateTimePic

2009-08-12 14:38:05

ASP.NET Dat

2011-04-19 10:33:16

ASP.NET自定義控

2009-08-06 17:52:45

ASP.NET控件開發自定義控件

2009-07-20 15:44:32

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-08-10 16:58:45

ASP.NET安裝部署

2009-07-31 12:43:59

ASP.NET MVC

2009-07-28 14:47:18

ASP.NET MVC

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2011-09-08 13:56:41

ASP.NET性能

2009-08-01 12:00:15

ASP.NET服務器自ASP.NET服務器ASP.NET

2009-08-06 09:18:01

ASP.NET自定義控ASP.NET控件開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九热国产精品视频 | 99成人| 黄色免费在线网址 | 国产成人网 | 国产精品夜色一区二区三区 | 国产大毛片| 91久久久久久久久久久 | 欧美一区二区三区在线视频 | 免费一二区 | 亚洲一区精品在线 | 国产资源在线视频 | 国产精品国产a级 | 亚洲日本激情 | 欧美性生活一区二区三区 | 欧美成ee人免费视频 | 久久国产精品视频免费看 | wwwxxx国产| 亚洲一区在线观看视频 | av在线播放网站 | 黄网免费看 | 成人精品鲁一区一区二区 | 狠狠爱网址 | 国内成人免费视频 | 欧美精品一二区 | 亚洲精品在线免费观看视频 | 中文字幕在线看第二 | 国产精品电影网 | 91视频在线观看免费 | 亚洲一区日韩 | 一级一级毛片免费看 | 中文字幕动漫成人 | 狠狠操操 | 99视频在线免费观看 | 免费欧美 | 久久久女女女女999久久 | 久日精品| 欧美黑人国产人伦爽爽爽 | 91视频一区二区 | 国产成人精品久久二区二区91 | 久久伊人影院 | 成人激情视频 |