为什么在 Web API 中找不到我的 POST 操作 ASP.NET
本文关键字:POST 操作 ASP NET 我的 找不到 Web API 为什么 | 更新日期: 2023-09-27 18:31:44
这是我的DefaultApi配置:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new { action = "DefaultAction", id = RouteParameter.Optional }
);
[ActionName("DefaultAction")]
public HttpResponseMessage Get(string id)
[ActionName("DefaultAction")]
public HttpResponseMessage Post(MyClass obj)
为什么GET
工作但使用POST
我得到一个404 Not Found
错误?
有什么想法或建议吗?
编辑:
客户端 JavaScript:
$.ajax({
type: "POST",
url: "@Url.Content("~/api/controllername")",
data: args,
200: function (data) {
......
}
});
我遇到了类似的问题,解决方案是将[FromBody]
添加到方法的参数中,如下所示:
[HttpPost]
public void PostIncreaseViewCounter([FromBody]int id)
{
}
将{action}
添加到路由后,使用方法名称前缀来确定获取/发布功能的"神奇"代码将不起作用。
您需要将[HttpPost]
属性添加到Post(MyClass obj)
方法中:
[HttpPost]
[ActionName("DefaultAction")]
public HttpResponseMessage Post(MyClass obj)
{
// ...
}
// equivalent to:
[HttpPost]
public HttpResponseMessage DefaultAction(MyClass obj)
{
// ...
}
请注意,在上面,您的方法名称可用于定义操作名称,因此您可以根据正在使用的路由重命名方法,而不是使用 ActionName
属性。