2

我环顾四周,试图找到一些关于此的帖子,有很多但没有一个可以解决我的具体问题(我可以找到)。

在我的 Api 控制器中,还有许多其他带有“ GET ”的方法都可以正常工作,但是当我添加一个新方法时,它返回405 method not allowed消息

 [GET("GetNames/{Id}/{Age}")]
 public List<Names> Names(long Id, string Age)
  {
    ...
    ...
  }

但是当我[System.Web.Http.HttpGet]使用我的方法时,它就开始起作用了。

 [System.Web.Http.HttpGet]
 [GET("GetNames/{Id}/{Age}")]
 public List<Names> Names(long Id, string Age)
  {
    ...
    ...
  }

谁能解释一下我做错了什么,或者这是正确的方法。我发现几乎相同的问题MVC AttributeRouting With.. and 405 when using..但仍然感到困惑。

4

2 回答 2

0

如果你有

using System.Web.Mvc; 

删除并添加

using System.Web.Http;
于 2015-04-13T05:44:19.567 回答
0

如果未指定诸如“Get”、“Post”、“Put”、“Delete”之类的动词,Web API 默认假定该操作为动词 POST。

您还明确给出了 [GET("GetNames/{Id}/{Age}")] 属性,并且它是 GETAttribute 的对象。动作选择器从 System.Web.Http 命名空间中查找属性,例如 HttpGet、HttpGetAttribute、HttpPostAttribute、HttpPutAttribute 等。

So remove [GET("GetNames/{Id}/{Age}")].
do not remove [HttpGet]
Create a custom route in app_start/WebApiConfig.cs file for this action if needed.

希望这可以帮助。

于 2013-10-11T10:05:42.953 回答