ASP.NET Web API 記錄請求響應數據到日志的一個方法


原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/

ASP.NET Web API 記錄請求響應數據到日志的一個方法

REST風格的服務架構已經成為越來越多人的選擇,之前我用過WCF來實現REST服務,WCF是一個很強大的框架,干這點小事有點太沉重的感覺。后來微軟又推出了一個ASP.NET Web API,專門用來處理一些基本的Http服務,即靈活又簡單,推薦大家都看看。

今天這篇文章是使用ASP.NET Web API過程中的一個小經驗,與大家分享。

后台服務通常需要記錄一些運行記錄,如輸入輸出、請求信息、處理過程、響應信息等,在以前記錄請求數據和響應數據時,我經常在具體的接口方法中處理,如:

LogHelper.LogRequest 用於記錄請求的數據,LogHelper.LogResponse用於記錄返回的數據。

這樣處理的話,每個方法中都要重復如此記錄,不簡潔,不方便,還處於復制代碼的階段。一直想改變,去苦於沒有思路。

某一天在博客園看到《ASP.NET Web API 處理架構》,如獲至寶。於是開始在Web API的生命周期中尋找可以截獲到這些數據的點,最終在官網上找到一篇文章《HTTP Message Handlers》,參考其中的說明,我重新構造了記錄輸入輸出的方法:

為了使消息處理進入我們自定義的消息處理程序,需要在Global.asax文件的Application_Start方法中,將CustomMessageHandler添加到MessageHandlers中:

DelegatingHandler使用委托模式,這樣添加以后,程序就會執行CustomMessageHandler中重寫的方法了。

這樣也算AOP了一下吧。

關於日志記錄,推薦使用log4netNLog,成熟穩定。

喜歡的朋友趕緊試試吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM