2016-11-29 65 views
1

我想創建Web API 2自定義屬性從客戶端參數,並返回數據給客戶端有什麼不對。從客戶端如何創建Web API 2自定義屬性並返回給客戶端?

例如數據:

{ id : 1, _token : 221 } 

例如在服務器:

//SomeController Action 
[CustomActionFilter] 
public String Foo(int id) 
{ 
    return id; 
} 

public class CustomActionFilter : ActionFilterAttribute, IActionFilter 
{ 
    void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     //get _token from client httprequest parameter 
     //return to client if _token != 221 
     //next proccess if _token == 221 
     // in real case, will cek token in db and compare it 
    } 
} 

請幫忙如何在CustomActionFilter得到_token並返回到客戶端錯誤消息的JSON格式,如果_token = 221?

也沿,如果沒有proccess問題做下一個proccess?

回答

1

你做正確的事的數量。首先,ActionFilterAttribute本身已經實施IActionFilter所以沒有必要再實現這個接口在自定義屬性再次。其次,令牌不傳遞給foo的功能,所以基本上你需要改變美孚函數的形式參數。然而,爲了給你一個想法如何做到這一點,檢查了這一點:最後

public class CustomActionFilter : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     var id = actionContext.ActionArguments["id"]; 
    } 
} 

,返回一個錯誤,你可以做OnActionExecuting方法內這一權利:

var response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "my reasonable error message"); 
actionContext.Response = response; 
相關問題