如何将ASP.NET Web API属性路由与复杂对象参数一起使用?

use*_*100 13 c# asp.net-web-api asp.net-web-api-routing

我有一个Web API操作,如下所示:

[HttpGet]
[Route("api/query/hello/{query}")]
public HttpResponseMessage Hello([FromUri]Query query)
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

其中Query类具有名为的公共字符串属性QueryText.当我点击以下网址时,收到404错误:

/api/query/hello?QueryText=bacon
Run Code Online (Sandbox Code Playgroud)

这在我开始使用属性路由之前有效.如果我没有参数或基本类型参​​数,我可以使属性路由工作.但是对于复杂的参数,我得到了404s.属性路由如何使用复杂的操作参数?它与FromUri属性兼容吗?

use*_*100 7

这里的解决方案是{query}Route定义中的令牌是多余的.删除它,如下,修复了问题:

[Route("api/query/hello")]
Run Code Online (Sandbox Code Playgroud)