2017-04-11 13 views
1

私は、customAuthorization中にOnAuthorizeメソッドでPostリクエストのパラメータにアクセスできる方法を探しています。WebAPIのAuthorizeAttributeのonAuthorizationメソッドで投稿リクエストのパラメータにアクセスする方法

他のスレッドを見て、以下の方法で試しましたが、うまくいきませんでした。

この場合、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メソッドのリクエストパラメータにアクセスする方法を教えてください。最後の2行が

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

を更新しました

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"];   

    } 
} 

回答は、私はちょうど私が探しています正確なキーと値のペアを取得することができます。

答えて

1

データが体内にポストされますので、あなたはあなたが文字列値を取得し、

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

出力文字列を使用してに変換モデルに変換することができ、

をPOSTを言っていますモデル

+0

ありがとうございました!私はあなたが提供した完全なソリューションで自分の答えを更新しました。 – Blossom

関連する問題