ASP.Net Web API Controller中不允许使用405方法

时间:2013-10-11 09:39:39

标签: asp.net-web-api attributerouting

我环顾四周试图在此找到一些帖子,而且有许多相当多但没有一个能解决我的具体问题(我能找到)。

在我的Api控制器中还有很多其他方法,其中“ GET ”工作正常,但当我添加新方法时,它返回 405方法不允许消息

 [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..405 when using..,但仍然感到困惑。

2 个答案:

答案 0 :(得分:0)

如果未指定“Get”,“Post”,“Put”,“Delete”等动词,则默认情况下Web API会将动作设置为动词POST。

您还明确地给出了[GET(“GetNames / {Id} / {Age}”)]属性,并且它是GETAttribute的对象。 Action选择器从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.

希望这有帮助。

答案 1 :(得分:0)

如果你有

using System.Web.Mvc; 

将其删除并添加

using System.Web.Http;