我正在寻找一种方法,可以在customAuthorization期间在OnAuthorize方法中访问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"];
最后两行让我得到我正在寻找的确切键值对。
答案 0 :(得分:1)
当您说POST时,数据将在正文中发布,
您可以获取字符串值,然后将其转换为您的模型
var request = actionContext.Request.Content.ReadAsStringAsync().Result
使用输出字符串并转换为模型