Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从AngularJs调用我的WebApi方法_C#_Asp.net_Angularjs_Asp.net Web Api - Fatal编程技术网

C# 无法从AngularJs调用我的WebApi方法

C# 无法从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.

我已经创建了一个webapi

[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:我已经注释了那行代码。我只是在里面打个招呼好吗