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 METHOD NOT ALLOWED

我已经尝试在 URL 和查询字符串中发送参数,并且两者的响应相同。当我尝试查询字符串版本时,我已将路线修改为

[GET("dictionaries?dictionaryID={dictionaryID}&page={page}

我还尝试将初始单词 from 更改dictionariesdictionary以避免与其他两个 GET 路由产生任何歧义,但仍然没有成功。

AttributeRouting的文档只提到了与参数约束相关的查询字符串(由于 WebHost 框架,我无法使用这些查询字符串)并且没有提到如何在路由中使用查询字符串。

谁能告诉我如何使用这两个参数实现第三条路线,还是我必须放弃 AttributeRouting 或尝试自己的控制器?

4

1 回答 1

1

Web API 动作选择器隐含地认为这里的第三个动作是 POST,因为它不是以 GET、POST、PUT 等动词开头的。尝试添加HttpGet属性,看看这是否有效。

[HttpGet, GET("dictionaries/{dictionaryID}/{page}")]  
public Dictionary Browse(long dictionaryID, int page)
于 2013-06-11T16:36:43.793 回答