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"];
最后两行让我刚刚得到确切的键值对我期待的。
非常感谢你,它的工作!我已经用您提供的完整解决方案更新了我的答案。 – Blossom