我环顾四周试图在此找到一些帖子,而且有许多相当多但没有一个能解决我的具体问题(我能找到)。
在我的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 :(得分: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;