我正在尝试将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 METHOD NOT ALLOWED 。
我尝试过在URL和查询字符串中发送参数,两者的响应都是一样的。当我尝试查询字符串版本时,我已将路由修改为
[GET("dictionaries?dictionaryID={dictionaryID}&page={page}
我也尝试将初始字从dictionaries
更改为dictionary
,以避免与其他两条GET路线产生任何歧义,但仍然没有成功。
documentation for AttributeRouting仅提及与参数约束相关的查询字符串(由于WebHost框架而无法使用),并且未提及如何在路由中使用查询字符串。
有人能告诉我如何使用这两个参数实现第三条路径,还是我必须删除AttributeRouting或尝试自己的控制器?
答案 0 :(得分:1)
Web API操作选择器隐式地认为此处的第三个操作是POST,因为它不是以GET,POST,PUT等动词开头。尝试添加HttpGet
属性,看看是否有效。
[HttpGet, GET("dictionaries/{dictionaryID}/{page}")]
public Dictionary Browse(long dictionaryID, int page)