Angular调用WEBAPI没有命中断点

时间:2016-06-21 13:36:29

标签: angularjs asp.net-web-api

所以我在同一个mvc应用程序中调用一个web api控制器作为m角度代码,就像这样

        $http.get('/api/lime/').success(function (data) {
        $scope.line = data;
        $scope.$apply();
    }).error(function (jqXhr, status, errorThrown) {
        //$('#lblMessage').text(errorThrown).show();

    });

它工作正常,实际上击中了web api实际用于获取数据的类中的断点,但它不会命中控制器。我没有传递一个id,所以它击中了没有参数的第二个httpget。控制器在下面。注意:LimeLoader()。GetLimes()行是对解决方案中引入数据的类的调用。我在这个课程中有一个断点,它很好。

    public class LimeController : ApiController
{
    [HttpGet]
    public LimeLoader GetLime(int id)
    {
        return new LimeLoader(id);
    }
    [HttpGet]
    public IEnumerable<LimeLoader> GetLimes()
    {
        return new LimeLoader().GetLimes().ToList();
    }
}

这是路线:

        public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

它从第二个HttpGet方法返回集合,但为什么不在控制器中击中我的断点?提前致谢。

2 个答案:

答案 0 :(得分:0)

试试这个: WebApiConfig.cs

 config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/**{action}**/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

角:

 $http.get('/api/lime/GetLimes').success(function (data){..

答案 1 :(得分:0)

我通过在api调用的路径中添加完整URL来解决它,即

../../ API

而不是/ api

如果你没有提供完整的路径,不确定为什么这仍然会执行,但确实如此。