首页 > 解决方案 > 如何在 Web API 中获取传递给请求的所有参数

问题描述

我正在尝试获取传递给请求的所有参数,以便我可以验证类文件中未声明的任何参数是否会引发异常。

假设我的类文件是:

    [PermissionFilter("somepermision")]
    [Route("/Userdetails", "POST")]
    public class UserDetails
    {
        public string surname{ get; set; }
        public string forename{ get; set; }
    }

因此,如果用户从邮递员错误地发送参数,我想抛出异常。有什么方法可以从最终用户那里获取所有请求参数。这样我就可以根据我的要求对其进行验证。假设用户在请求类文件中发送了一些额外的参数以及提到的参数,我想在这种情况下抛出异常。

标签: c#apiasp.net-web-apiwebhttpwebrequest

解决方案


您将在 MS_QueryNameValuePairs 键的 Request.Parameters 中找到请求参数

 [HttpPost]
    public HttpResponseMessage Post()
    {
        var keyValuePair =this.Request.Properties["MS_QueryNameValuePairs"];
    }

并在其上创建一个 foo 循环以获取它们,或者您可以像这样手动获取它们:

      [HttpPost]
    public HttpResponseMessage Post()
    {
        var query = this.Request.RequestUri.Query;
        query.Remove(0);
        List<string> paramteters = query.Split('&').ToList();
     }

这对你有用:D


推荐阅读