我正在尝试创建一个MVC WebAPI控制器,它接收一个id,它在数据库中创建一个记录,然后返回。但是,我一直收到错误。
在我的testAPI控制器中,我有:
[HttpPost]
public HttpResponseMessage OpenSession(int id)
{
//Logic of post in here never gets hit
}
但是,当我尝试发布到API时,我得到以下响应:
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:54388/api/testAPI/OpenSession/'.","MessageDetail":"No action was found on the controller 'testAPI' that matches the request."}
我已将路由更改为:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/"
);
我正在尝试使用有效负载中的值id发布到:http://localhost:54388/api/testAPI/OpenSession/
。但是我认为它在网址中有所期待 - 有人可以指出我哪里出错了。
答案 0 :(得分:3)
当您尝试仅POST一个参数时,WebApi会出现问题。我记得我有同样的问题。有很多方法可以对此进行排序,但每次都有效的方法是使用模型而不是int:
[HttpPost]
public HttpResponseMessage OpenSession(OpenSessionParameters parameters)
{
//Logic of post in here never gets hit
}
public class OpenSessionParameters
{
public int Id { get; set; }
}
或者如果你坚持不上课,你可以试试这个:http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/
我已经使用了一些,但最终将所有[FromBody]
参数替换为模型 - 工作更可靠。