C# 无法从AngularJs调用我的WebApi方法
我已经创建了一个webapiC# 无法从AngularJs调用我的WebApi方法,c#,asp.net,angularjs,asp.net-web-api,C#,Asp.net,Angularjs,Asp.net Web Api,我已经创建了一个webapi [EnableCors("*", "*", "*")] [RoutePrefix("api/Movie")] public class MovieController : ApiController { //IMovieRepository repo; //public MovieController(IMovieRepository _repo) //{ // this.
[EnableCors("*", "*", "*")]
[RoutePrefix("api/Movie")]
public class MovieController : ApiController
{
//IMovieRepository repo;
//public MovieController(IMovieRepository _repo)
//{
// this.repo = _repo;
//}
[Route("latest")]
[HttpGet]
public IHttpActionResult Get()
{
try
{
//var getAllMovies = repo.GetAll();
return Ok("hello");
}
catch (Exception ex)
{
return Ok(ex.Message);
}
}
}
我的angularJs代码
var _getMovies = function () {
return $http.get(serviceBase + 'api/movie/latest').then(function (results) {
return results;
});
};
当我试图直接从url执行此操作时
这给了我这样的例外。
首先,如果您遇到异常,对api的调用实际上是有效的,因为服务器正在抛出异常。异常来自服务器端代码,AngularJS与该问题完全无关 您得到的异常可能发生在以下代码中:
[RoutePrefix("api/Movie")]
public class MovieController : ApiController
{
IMovieRepository repo;
[Route("latest")]
[HttpGet]
public IHttpActionResult Get()
{
try
{
//var getAllMovies = repo.GetAll();
return Ok("hello");
}
catch (Exception ex)
{
return Ok(ex.Message);
}
}
}
空引用是指您的回购未实例化
你在问题中向我们展示的是:
[RoutePrefix("api/Movie")]
public class MovieController : ApiController
{
[Route("latest")]
[HttpGet]
public IHttpActionResult Get()
{
try
{
//var getAllMovies = repo.GetAll();
return Ok("hello");
}
catch (Exception ex)
{
return Ok(ex.Message);
}
}
}
你没有理由碰到这种异常,所以我会说,清理,构建,然后再试一次
比如:
[RoutePrefix("api/Movie")]
public class MovieController : ApiController
{
IMovieRepository repo;
public MovieController(IMovieRepository _repo)
{
this.repo = _repo;
}
[Route("latest")]
[HttpGet]
public IHttpActionResult Get()
{
try
{
//var getAllMovies = repo.GetAll();
return Ok("hello");
}
catch (Exception ex)
{
return Ok(ex.Message);
}
}
}
您可能会遇到类似“找不到无参数构造函数”的问题。
这可能是因为您的依赖项注入没有得到很好的配置,在依赖项容器中没有找到IMovieRepository的实现如果您遇到了API,那么错误不是来自Angular。在每个控制器操作中设置一个断点,以查看您实际遇到的路由。我在每个位置都设置了断点,但它没有遇到任何断点。您的api正在抛出异常,它正在尽职地序列化它并将其发送回客户机。你们有任何地方的退货吗?使用浏览器F12工具创建网络配置文件,并检查请求和响应代码。可能是因为您正在运行旧版本的代码,是否重建了项目?repo.GetAll可能从旧代码中抛出空引用。确保您使用pdb文件在调试模式下运行enabled@Titanium:我已经注释了那行代码。我只是在里面打个招呼好吗