所以我在同一个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方法返回集合,但为什么不在控制器中击中我的断点?提前致谢。
答案 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
如果你没有提供完整的路径,不确定为什么这仍然会执行,但确实如此。