有很多与webApi没有被调用有关的问题,但我尝试了每个解决方案,我无法为我的问题找到正确的解决方案。 我有像这样的webApi
public class shoppingCart : ApiController
{
[HttpPost]
public string getDetails()
{
return "HttpPost";
}
[HttpGet]
public string getDetails1()
{
return "HttpGet";
}
[HttpPut]
public string getDetails2()
{
return "HttpPut";
}
[HttpDelete]
public string getDetails3()
{
return "HttpDelete";
}
}
我的global.asax.cs文件就像这样
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
}
我的WebApiConfig.cs文件就像这样
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我的routeConfig.cs文件就像这样
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
我的jQuery Ajax脚本就像这样
$('#btnAjax').click(function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/api/shoppingCart/getDetails',
success: function (returnData) {
alert('success');
},
error: function (xhr, ajaxOptions, thrownError) {
alert('error');
}
});
});
每当我尝试调用web api时,我都会收到错误
请有人帮我解决问题。 谢谢
答案 0 :(得分:2)
尝试将控制器重命名为shoppingCartController
。据我所知,ASP.NET将查看请求,然后搜索名为request Controller
的控制器。我总是试图通过添加Controller来保证安全。
答案 1 :(得分:0)
试试这个
[HttpPost]
[Route("/api/shoppingCart/getDetails")]
public string getDetails()
{
return "HttpPost";
}
如评论中所述,您还应在WebApiConfig
public static void Register(HttpConfiguration config)
{
//this line
config.MapHttpAttributeRoutes();
....
}
修改强>
正如其他一些答案所述,您还应遵循控制器的命名约定,例如ShoppingCartController
答案 2 :(得分:0)
您没有遵循控制器的命名约定
重命名您的控制器
public class ShoppingCartController : ApiController { ... }