我的API包含2个Get方法和1个POST方法。2 get工作,但是POST返回这个消息:
{"Message":"请求的资源不支持http方法'GET'."}
这些是我的方法:
[HttpGet]
public IEnumerable<tblMetrHist> Get(string accntnum)
{
...
}
[HttpGet]
public IEnumerable<CustomerInfo> GetCustomer(string accntnum)
{
...
}
[HttpPost]
public IHttpActionResult Post([FromUri] string num, [FromUri] string reading)
{
using (CustomerEntities entities = new CustomerEntities())
{
entities.tbl1.Add(new tbl1()
{
Number = num,
Reading = reading
});
entities.SaveChanges();
}
return Ok();
}
我的Route是:
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{action}"
);
所以我不确定如何使API将该方法识别为"Post"而不是"get"。帮助吗?
create ViewModel
public class ViewModel
{
public string Num {get; set;}
public string Reading {get; set;}
}
and try this
[HttpPost()]
public IHttpActionResult Post([FromUri] ViewModel model)
{
var num=model.Num;
.....
}
更新由于浏览器自动执行get调用,我建议PO使用另一个工具来发布。高级休息客户端;的Chrome被PO选为一个帖子,一切都很正常。