在/ api / {controller}

时间:2018-03-11 17:09:14

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

我已经制作了一个API控制器,并在其他文章中提出了建议的更改。 (参考404 error after adding Web API to an existing MVC Web Application

我觉得我非常接近解决方案,但是我的页面仍未找到正确的控制器。当我使用F12工具时,我可以看到它在我的" / api / {controller}"之前添加了我的MVC控制器。很明显,我的路由中仍有问题,但我不确定如何解决它?

TimeRegistrations是我的MVC控制器,api / WorkOrderAPI是我实际需要达到的控制器。路线应为/ api / WorkOrderAPI。网址是这样的: 请求的URL:/ TimeRegistrations / api / WorkOrderAPI

要获取我想要的页面,我来自:

localhost:1234/TimeRegistrations/Index

需要的表格被加载到页面上:

localhost:1234/TimeRegistrations/WorkOrderIndex

应该在

请求表格
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 }
        );
    }

在routeconfig中我得到了:

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");
        }
    });

提前致谢!

1 个答案:

答案 0 :(得分:1)

您在AJAX通话中使用相对路线。试试这个

url: "/api/WorkOrderAPI",