我有一个Web API操作,如下所示:
[HttpGet]
[Route("api/query/hello/{query}")]
public HttpResponseMessage Hello([FromUri]Query query)
{
return null;
}
其中Query类具有名为QueryText
的公共字符串属性。当我点击以下网址时,收到404错误:
/api/query/hello?QueryText=bacon
这在我开始使用属性路由之前有效。如果我没有参数或基本类型参数,我可以使属性路由工作。但是对于复杂的参数,我得到404s。属性路由如何使用复杂的操作参数?它是否与FromUri
属性兼容?
答案 0 :(得分:7)
这里的解决方案是路由定义中的{query}
令牌是多余的。删除它,如下所示,修复了问题:
[Route("api/query/hello")]
答案 1 :(得分:1)
因为您正在从URL中读取,所以需要[FromUri]属性。您的路线应该类似于:
public HttpResponseMessage Hello([FromUri]Query query)
{
//Implement whatever
return null;
}
/ api / {Controller Name} / hello?QueryText = bacon
然后应该正常工作。
模型绑定器将获取您提供的任何查询参数,然后尝试绑定Query
对象内的任何内容。在你首先使用它之后我会担心路线属性。