Val*_*ter 8 c# asp.net asp.net-web-api
这是我的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)
Run Code Online (Sandbox Code Playgroud)
怎么GET工作,但使用POST我得到一个404 Not Found错误?
任何想法或建议?
编辑:
客户端JavaScript:
$.ajax({
type: "POST",
url: "@Url.Content("~/api/controllername")",
data: args,
200: function (data) {
......
}
});
Run Code Online (Sandbox Code Playgroud)
一旦添加{action}到您的路线,使用方法名称的前缀来确定获取/发布功能的"神奇"代码不起作用.
您需要为方法添加[HttpPost]属性Post(MyClass obj):
[HttpPost]
[ActionName("DefaultAction")]
public HttpResponseMessage Post(MyClass obj)
{
// ...
}
// equivalent to:
[HttpPost]
public HttpResponseMessage DefaultAction(MyClass obj)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,上面的方法名称可用于定义操作名称,因此您可以根据使用的路径重命名方法,而不是使用ActionName属性.
我有一个类似的问题,解决方案是添加[FromBody]到方法的参数像这样:
[HttpPost]
public void PostIncreaseViewCounter([FromBody]int id)
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10000 次 |
| 最近记录: |