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中的浏览器。
尝试的console.log为$ scope.events = eventData.getAllEvents();
-
检查也为CORS问题后端(网页API)
来解决,它这样的代码:对Startup.cs
app.UseCors(Microsoft.Owin.Cors。 CorsOptions.AllowAll);
好运:)