2013-10-11 175 views
2

我环顾四周试图找到一些关于此的帖子,并且有很多很多但没有解决我的具体问题(我可以找到)。不允许在ASP.Net Web API控制器中使用405方法

在我的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..但仍然困惑。

回答

0

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

此外,您还明确给出了[GET(“GetNames/{Id}/{Age}”)]属性,并且它是GETAttribute的一个对象。 行动选择看起来像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. 

希望这有助于从System.Web.Http名称空间的属性。

0

,如果你有

using System.Web.Mvc; 

将其删除,并添加

using System.Web.Http;