WebApi不接受帖子(404错误)

时间:2013-01-29 13:12:23

标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing

我有一个启用了WebAPI的MVC4 Web项目。

我想将数据发布到API控制器,但帖子不起作用,我每次都得到404(Add方法中的断点没有被击中)....

以下是代码:

public class IncidentSessionLogController : ApiController
{
   [HttpPost]
   public void Add(MyInputDTO inputData)
   {
   }
}

我使用基于行动的路由:

public static void Register(HttpConfiguration config)
{
   config.Routes.MapHttpRoute(
       name: "ControllerAndAction",
       routeTemplate: "api/{controller}/{action}");

   config.Routes.MapHttpRoute(
       name: "ControllerAndActionAndId",
       routeTemplate: "api/{controller}/{action}/{id}",
       defaults: new { id = RouteParameter.Optional });
}

我使用Fiddler发布数据:

http://localhost:42901/api/IncidentSessionLog/Add

我的网站目前在IIS Express中托管以进行开发,我在Fiddler的请求主体中添加了JSON对象文字。

1 个答案:

答案 0 :(得分:0)

修复它,感谢我的同事!

MVC路由(我忘了最初发布),干扰了API路由,所以我必须为MVC路由添加一个约束:

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Game", action = "Start", id = UrlParameter.Optional },
                constraints: new { controller = @"^((?!(api)).)*$" });