如何在WebAPI中

时间:2017-04-11 19:51:41

标签: c# asp.net-web-api2

我正在寻找一种方法,可以在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"];

最后两行让我得到我正在寻找的确切键值对。

1 个答案:

答案 0 :(得分:1)

当您说POST时,数据将在正文中发布,

您可以获取字符串值,然后将其转换为您的模型

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

使用输出字符串并转换为模型