在 /api/{controller} 之前添加的 C# webapi mvc 控制器
C# webapi mvc controller added before the /api/{controller}
我制作了一个 API 控制器,并按照其他文章中的建议进行了更改。 (参考 404 error after adding Web API to an existing MVC Web Application)
我觉得我已经很接近解决方案了,但是我的页面仍然没有到达正确的控制器。当我使用 F12 工具时,我可以看到它在我的“/api/{controller}”之前添加了我的 MVC 控制器。显然我的路由仍然有问题,但我不确定如何解决它?
TimeRegistrations 是我的 MVC 控制器,api/WorkOrderAPI 是我实际需要访问的控制器。路由应该是/api/WorkOrderAPI。 url 是为此而设计的:
请求 URL:/TimeRegistrations/api/WorkOrderAPI
要获取我想要的页面,我来自:
localhost:1234/TimeRegistrations/Index
所需的 table 已加载到页面上:
localhost:1234/TimeRegistrations/WorkOrderIndex
table 应在
请求
localhost:1234/api/WorkOrderAPI
在我的申请开始时,我得到了:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
在 webApiConfig 中我有:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
在路由配置中我有:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "EmployeeInfo", action = "Index", id = UrlParameter.Optional }
);
}
我的查看代码是:
function loadWorkOrders() {
$.ajax({
type: "GET",
url: "api/WorkOrderAPI",
success: function (data) {
alert("Success");
self.WorkOrders(data);
},
error: function (err) {
alert(err.status + " from WorkOrderAPI");
}
});
提前致谢!
您在 AJAX 调用中使用了相对路由。试试这个
url: "/api/WorkOrderAPI",
我制作了一个 API 控制器,并按照其他文章中的建议进行了更改。 (参考 404 error after adding Web API to an existing MVC Web Application)
我觉得我已经很接近解决方案了,但是我的页面仍然没有到达正确的控制器。当我使用 F12 工具时,我可以看到它在我的“/api/{controller}”之前添加了我的 MVC 控制器。显然我的路由仍然有问题,但我不确定如何解决它?
TimeRegistrations 是我的 MVC 控制器,api/WorkOrderAPI 是我实际需要访问的控制器。路由应该是/api/WorkOrderAPI。 url 是为此而设计的: 请求 URL:/TimeRegistrations/api/WorkOrderAPI
要获取我想要的页面,我来自:
localhost:1234/TimeRegistrations/Index
所需的 table 已加载到页面上:
localhost:1234/TimeRegistrations/WorkOrderIndex
table 应在
请求localhost:1234/api/WorkOrderAPI
在我的申请开始时,我得到了:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
在 webApiConfig 中我有:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
在路由配置中我有:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "EmployeeInfo", action = "Index", id = UrlParameter.Optional }
);
}
我的查看代码是:
function loadWorkOrders() {
$.ajax({
type: "GET",
url: "api/WorkOrderAPI",
success: function (data) {
alert("Success");
self.WorkOrders(data);
},
error: function (err) {
alert(err.status + " from WorkOrderAPI");
}
});
提前致谢!
您在 AJAX 调用中使用了相对路由。试试这个
url: "/api/WorkOrderAPI",