1
我正在尝试将AttributeRouting
添加到我的WebAPI项目中。如何用查询字符串指定路由?
在一个控制器我目前有定义的三个GET方法:
[GET("dictionaries")]
public IEnumerable<Dictionary> Get()
[GET("dictionaries/{id}")]
public Dictionary GetByID(int id)
[GET("dictionaries/{dictionaryID}/{page}")]
public Dictionary Browse(long dictionaryID, int page)
前两个路由工作,我希望他们能,但第三始终返回405不允许的方法。
我试着发送URL中的参数和查询字符串,并且它们都是相同的响应。当我试着查询字符串的版本,我已经修改了路线是
[GET("dictionaries?dictionaryID={dictionaryID}&page={page}
我也试着改变从dictionaries
初始字dictionary
,以避免与其他两个GET航线任何含糊之处,但仍然没有成功。
documentation for AttributeRouting只提及与参数约束(由于WebHost框架而不适用于我)的查询字符串,并未提及查询字符串如何用于路由。
任何人都可以告诉我如何使用这两个参数来实现第三条路线,还是必须放弃AttributeRouting或尝试使用它自己的控制器?
谢谢基兰,现在完美的工作。我认为AttributeRouting的GET属性允许我删除WebAPI的HttpGet属性 - 该GET取代了HttpGet - 但显然这不是真的。 – awj
这是AR的一个已知问题。 * IActionHttpMethodProvider *在Web API RTM中是内部的,这在这里引起了问题。在Web API vNext中,它已被更改为public,所以一旦发布,就不再需要这个双重声明。更多信息https://github.com/mccalltd/AttributeRouting/issues/83 –