请多多包涵,因为我对使用 ASP.Net Web API 还是很陌生。
我目前有一个我开发的 API,它似乎工作正常。我可以从我的主页使用 AJAX 调用它,并且一切都按预期工作。例如,我可以拨打如下电话:
$.ajax({
url: "api/comment/AddComment",
type: "POST",
contentType: "application/json; charset=utf-8",
//and so on...
});
当从我的索引页面调用它时,这工作得很好,当 URL 看起来像 localhost:44966/
我现在需要开始向其他一些视图添加一些功能 - 特别是让用户向网站添加反馈的视图。我在 HomeController 上添加了一个新视图,该视图显示了新的反馈视图,以及一个新的 ApiController(称为 FeedbackController)。在该页面上,我尝试拨打以下电话:
$.ajax({
url: "api/Feedback/SubmitFeedback",
type: "POST",
contentType: "application/json; charset=utf-8",
cache: false,
data: JSON.stringify(parameter),
success: function (data) {
alert("success!");
}
});
这会导致 404,并且查看调用中的 URL,难怪它会失败,因为它看起来像这样:
/Home/api/Feedback/SubmitFeedback
我还注意到,如果我导航回家(这次是 localhost:44966/Home/Index),由于同样的问题,我的其他服务调用也会失败并出现类似的 404 响应 - 它似乎正在插入“/Home/ " 在它试图用来访问 API 的所有 URL 之前。
有人可以阐明这里发生了什么吗?为什么在 API 调用名称之前插入“/Home/”?
在有人问之前,这是我的 WebApiConfig 路由的样子:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);