在MVC Web Api授权过滤器中访问Get或Post参数

时间:2014-02-18 23:29:32

标签: asp.net-web-api

我希望与Accessing post or get parameters in custom authorization MVC4 Web Api实现相同,但它仅适用于GET请求。

所以我为web api编写了以下动作过滤器:

 public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext   actionContext)
    {
        var request = actionContext.Request;
        var headers = request.Headers;
        HttpContext ctx = default(HttpContext);
        ctx = HttpContext.Current;

        if (ctx != null)
        {
            var apiKey = (string)actionContext.ActionArguments["apiKey"];
        }            
    }

帖子的形式如下:

<form name="form1" method="post" enctype="multipart/form-data" action="@localPostUrl">
<fieldset>
    <legend>File Upload Example</legend>
    <div>
        <label for="caption">Image Caption</label>
        <input name="caption" type="text" />
    </div>
    <div>
        <label for="image1">Image File</label>
        <input name="image1" type="file" />
    </div>
    <div>
        <input type="text" name="apiKey" id="apiKey" value="b2b54e7b-ca0b-4adf-a369-efe839e55120" />
        <input type="submit" value="Submit" />
    </div>
</fieldset>

所以我试图将一个图像和一个字符串发布到Web Api,但ActionFilter中的actionContext.ActionArguments在执行POST请求时为空,但在执行GET请求时正在工作。

与我问题上提供的解决方案相比,我注意到该帖子的操作有一个属性FormUri添加到参数中,但我无法在查询字符串中发送ApiKey。

是否有解决方案来获取Post paramteres以便在验证时执行某种形式?

0 个答案:

没有答案