程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Web API Filter ActionFilterAttribute 使用,webapiactionfilter

Web API Filter ActionFilterAttribute 使用,webapiactionfilter

編輯:關於.NET

Web API Filter ActionFilterAttribute 使用,webapiactionfilter


  WebApi 提供兩種過濾器的類型:

1、ActionFilterAttribute

2、exceptionFilterAttribute

兩個類都是抽象類,ActionFilter 主要實現執行請求方法體之前(覆蓋基類方法:OnActionExecuting),和之後的事件處理(覆蓋基類方法:OnActionExecuted)。exceptionFilter 主要實現出發異常方法(覆蓋基類方法:OnException)。

過濾器在實際項目中都會經常使用到,例如:日志、安全驗證、全局錯誤處理等。

下面寫一個小例子:

1、新建ActionFilterAttribute:

public class ActionFilter : ActionFilterAttribute { public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) { base.OnActionExecuting(actionContext); //獲取請求消息提數據 Stream stream = actionContext.Request.Content.ReadAsStreamAsync().Result; Encoding encoding = Encoding.UTF8; stream.Position = 0; string responseData = ""; using (StreamReader reader = new StreamReader(stream, encoding)) { responseData = reader.ReadToEnd().ToString(); } //反序列化進行處理 var serialize = new JavaScriptSerializer(); var obj = serialize.Deserialize<RequestDTO>(responseData); //在action執行前終止請求時,應該使用填充方法Response,將不返回action方法體。 if (obj == null) actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, obj); if (string.IsNullOrEmpty(obj.PhoneType) || string.IsNullOrEmpty(obj.PhoneVersion) || string.IsNullOrEmpty(obj.PhoneID) || obj.StartCity < 1) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, obj); } } } View Code

2、在Api控制器的Action方法上加上[過濾器類],例如:[Filter.ActionFilter]

public class Mobile450Controller : ApiController { private DoWork450Invoke _DoWork = new DoWork450Invoke(); [Uzai.Mobile.Filter.ActionFilter] [HttpPost] public RepProductTopicsList GetRecmdProductTopicsList(ReqProductTopicsList reqDTO) { return _DoWork.GetRecmdProductTopicsList(reqDTO); } } View Code

 

以後會慢慢完善這篇文章,WebApi 的簡單的例子,網上也不少,但是設計深入開發和實際應用的少之又少,這方面的書籍也不多,大家可以上MSDN上尋求自己的答案。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved