无法从AngularJs调用我的WebApi方法

时间:2015-09-13 14:10:16

标签: c# asp.net angularjs asp.net-web-api

我创建了一个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 Code

var _getMovies = function () {

        return $http.get(serviceBase + 'api/movie/latest').then(function (results) {
            return results;
        });
    };

当我尝试直接从url执行此操作时 它给了我这样的例外。 enter image description here

1 个答案:

答案 0 :(得分:0)

首先,如果你得到一个例外,对你的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);
        }
    }
}

null引用是你的repo没有被实例化。

您在问题中向我们展示的内容如下:

    [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的实现)