.Net MVC 與WebApi ActionFilterAttribute 區別


 首先我們來看下 這兩個ActionFilterAttribute 的命名空間區別的:

 

 

 

可以看出mvc 引用的是System.Web.Mvc,webapi 引用的是System.Web.Http.Filters ,不知道小伙伴們有看出來別的區別沒有,對的,有的 ,虛方法傳入類不同,這樣導致傳入構造與輸出構造也將不同了。

 

這里看下這兩個如何攔截的吧,先說下mvc 的:

//OnActionExecuting在被攔截Action前執行
public override void OnActionExecuting(ActionExecutingContext filterContext)
{

 
        

 base.OnActionExecuting(filterContext);

 filterContext.HttpContext.Response.Write("Action執行之前"+Message+"<br />");

}

 

 

呀。。特碼的,你會發現..web api 的玩的不一樣,它是繼承Http 的

public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{

base.OnActionExecuting(actionContext);
}

 

那如果需要攔截的話,怎么攔截返回呢?

其實很簡單,只需要調用http返回狀態值,即可攔截不會再往方法內部走了

public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{

//此處暫時以401返回,可調整為其它返回
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
//actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);


base.OnActionExecuting(actionContext);
}

 


免責聲明!

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



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