Web API 2 使用字符串数组作为 GET 参数的操作未按预期工作

Web API 2 Action with String array as GET parameter not working as expected

我有一个看起来像这样的动作:

/// <summary>
/// Search for customers/projects/tasks by title.
/// </summary>
/// <param name="q">The query to search by.</param>
/// <param name="filters">Extra filters for the search query.</param>
[Route("Search")]
public IHttpActionResult GetSearch(string[] filters, string q = "")
{
    ...
}

根据我能找到的信息,我应该能够通过使用类似于此的 url 将值传递给 filters 参数:

http://application/controller/Search?q=query&filters=first&filters=second

不幸的是,当我尝试访问此操作中的 filters 参数时,它始终是 null.

编辑: 在我的应用程序中查看 api 帮助页面时,它仅显示 q 作为 URI 参数。

filters参数似乎被识别为正文参数。

Help page screenshot

有谁知道是什么原因导致了这种行为,我该如何解决? (如何使 filters 参数被识别为 URI 参数。)

显然这里的解决方案是将操作更改为:

public IHttpActionResult GetSearch([FromUri] string[] filters, string q = "")
{
    ...
}

参数前面的[FromUri]强制参数取自URI,而不是正文。