最近公司要求對WebApi 實現服務端信息的監控(服務端信息攔截),由於本人之前沒有做過這方便的相關項目所以在做的過程中也是困難重重,探索的過程也是非常痛苦的,好歹最終也算實現了這個功能。所以將這個分享出來供大家相互學習。
要實現webapi的信息攔截其實相對於wcf 和webservice ,我個人覺得算是最簡單的一個,本人對這幾個服務也不是非常的熟悉,個人技術也有限,所以有不對的地方大家可以提意見,但是千萬別噴哈
首先創建一個類:MsgRecordFilterAttribute 該類繼承ActionFilterAttribute(這個需要引用 System.Web.Http.Filters),重寫OnActionExecuting,OnActionExecuted兩個方法
代碼如下:
public class MsgRecordFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
base.OnActionExecuting(actionContext);
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
}
}
這樣攔截類就完成
第二步 在webapi WebApiConfig文件中添加過濾:
config.Filters.Add(new MsgRecordFilterAttribute());
這樣就實現了WebApi 的信息攔截:可以在方法OnActionExecuting中獲取客戶端調用的方法名稱、方法返回值等信息。在OnActionExecuted中可以獲取方法的返回結果,通過這兩個方法可以獲取調用該服務所花費的時間等