2017-04-11 628 views
1

我正在尋找一種方法,以便能夠在customAuthorization期間訪問OnAuthorize方法中的Post請求的參數。如何在WebAPI中的AuthorizeAttribute的onAuthorization方法中訪問Post請求的參數

我看了其他線程,並嘗試了下面的方法,但沒有奏效。

在這種情況下,ActionArguments是空的。

AgentSummaryParams summary = (AgentSummaryParams)actionContext.ActionArguments["AgentSummaryParams"]; 
     string userID = (string)actionContext.ActionArguments["UserID"]; 

以下面的方式查詢是空字符串。

var queryString = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query); 
    var myQueryParam = queryString["MyValue"]; 

我無法在請求對象上找到方法GetQueryNameValuePairs()。

var queryParameters = actionContext.Request.GetQueryNameValuePairs().ToDictionary(x => x.Key, x => x.Value); 

var some_value = queryParameters.ContainsKey("some_key") 
     ? queryParameters["some_key"] : string.Empty; 

有人請讓我知道如何能夠訪問下面的方法中的HttPost方法的請求參數?

public class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) 
    { 
     ModelParamssummary = (ModelParams)actionContext.ActionArguments["ModelParams"]; 
     string userID = (string)actionContext.ActionArguments["UserID"];   

    } 
} 

回答更新

var request = actionContext.Request.Content.ReadAsStringAsync().Result; 
      JObject Obj = JObject.Parse(request); 
      UseID = (string)Obj["UserID"]; 

最後兩行讓我剛剛得到確切的鍵值對我期待的。

回答

1

當你說POST所以數據會後在體內,

你可以得到的字符串值,然後將其轉換爲模型

var request = actionContext.Request.Content.ReadAsStringAsync().Result 

使用輸出串並轉換爲模型

+0

非常感謝你,它的工作!我已經用您提供的完整解決方案更新了我的答案。 – Blossom