【发布时间】:2013-02-28 12:03:57
【问题描述】:
我有一个 VS2012 MVC4 解决方案,我在其中测试 Web API 控制器。
我成功地测试了 GET、POST、PUT,但 DELETE 仍然给我一个 http 404 错误。当我在我的 api 控制器中的“删除电影”操作中设置断点时,断点永远不会到达。
我阅读了很多关于这个问题的帖子,但没有人帮助我。
这是我的 DELETE API 控制器:
[HttpDelete]
public HttpResponseMessage DeleteMovie(int id)
{
// Delete the movie from the database
// Return status code
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
这是我的html页面:
<script type="text/javascript">
deleteMovie(1, function ()
{
alert("Movie deleted!");
});
function deleteMovie(id, callback) {
$.ajax({
url: "/api/Movie",
data: JSON.stringify({ id: id }),
type: "DELETE",
contentType: "application/json;charset=utf-8",
statusCode: {
204: function () {
callback();
}
}
});
}
</script>
我的经典路线如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
我的 API 路由如下:
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
在我的解决方案属性中,我配置了“使用本地 IIS Web 服务器”并选中了“使用 IIS Express”
我也尝试过使用“使用 Visual Studio 开发服务器”,但同样的问题。
有什么想法吗?
谢谢。
【问题讨论】:
-
在您的浏览器中,如果您使用调试工具,您能否捕获 jQuery 实际发出的 URL 并查看它是否正常?
标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-web-api-routing