AngularJS项目不与WebAPI项目沟通

问题描述:

我是AngularJS和WebAPI的新手。我有两个Visual Studio 2015项目,EventViewer(AngularJS)和AppData(WebAPI),并配置了IIS Express 7来托管网站。我有AngularJS项目的路径作为网站的路径,而且工作正常。对于AppData项目(WebAPI),我向该网站添加了一个应用程序。作为网站应用程序的路径,我正在使用包含WebAPI项目的文件夹的物理路径。这是正确的吗?是否足以使angular和webAPI应用程序相互交谈? AngularJS应用似乎没有与WebAPI应用进行通信。当我从IIS浏览网站时,我得到正确的页面但没有数据。我错过了什么?任何帮助将不胜感激。AngularJS项目不与WebAPI项目沟通

AngularJS控制器:

'use strict'; 

    eventsApp.controller('EventListController', 
     function EventListController($scope, eventData) { 
      $scope.events = eventData.getAllEvents(); 
     }); 

AngularJS服务:

eventsApp.factory('eventData', function ($resource) { 
    var resource = $resource('/data/event/:id', { id: '@id' }, { "getAll": { method: "GET", isArray: true, params: { something: "foo" } } }); 
    return { 
     getAllEvents: function() { 
      return resource.query(); 
     } 
}; 
}); 

的WebAPI控制器:

namespace AppData.Controllers 
{ 
    public class EventController : ApiController 
    { 
     public JToken Get(string id = null) 
     { 
      if (id == null) 
       return GetAllJsonEventsAsArray(); 
      return GetSingleJsonFile(id); 
     } 

     private static JToken GetSingleJsonFile(string id) 
     { 
      var path = System.Web.Hosting.HostingEnvironment.MapPath("/"); 
      return JObject.Parse(System.IO.File.ReadAllText(path + "../app/data/event/" + id + ".json")); 
     } 

     public void Post(string id, JObject eventData) 
     { 
      var path = System.Web.Hosting.HostingEnvironment.MapPath("/"); 
      System.IO.File.WriteAllText(path + "../app/data/event/" + id + ".json", eventData.ToString(Formatting.None)); 
     } 

     private JArray GetAllJsonEventsAsArray() 
     { 
      var path = System.Web.Hosting.HostingEnvironment.MapPath("/"); 
      var contents = ""; 
      foreach (var file in System.IO.Directory.GetFiles(path + "../app/data/event/")) 
      { 
       contents += System.IO.File.ReadAllText(file) + ","; 
      } 
      return JArray.Parse("[" + contents.Substring(0, contents.Length - 1) + "]"); 
     } 

    } 
} 

首先,F12中的浏览器。

  1. 尝试的console.log为$ scope.events = eventData.getAllEvents();

  2. 检查也为CORS问题后端(网页API)

    来解决,它这样的代码:对Startup.cs

    app.UseCors(Microsoft.Owin.Cors。 CorsOptions.AllowAll);

好运:)