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

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

其中 Query 类有一个名为 QueryText 的公共(public)字符串属性。当我点击以下 URL 时,出现 404 错误:
/api/query/hello?QueryText=bacon

这在我开始使用属性路由之前就起作用了。如果我没有参数或原始类型参数,我可以让属性路由工作。但是使用复杂的参数,我得到了 404。属性路由如何处理复杂的 Action 参数?它是否与 FromUri 属性兼容?

最佳答案

这里的解决方案是 Route 定义中的 {query} 标记是多余的。删除它,如下所示,解决了这个问题:

[Route("api/query/hello")]

关于c# - 如何使用具有复杂对象参数的 ASP.NET Web API 属性路由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21196596/

10-17 00:55