2017-07-11 17 views
0

AngularJSとWebAPIの新機能です。私は2つのVisual Studio 2015プロジェクト、EventViewer(AngularJS)とAppData(WebAPI)を持っており、WebサイトをホストするためにIIS Express 7を設定しました。私はAngularJSプロジェクトへの道筋をウェブサイトの道具として持っており、うまくいきます。 AppDataプロジェクト(WebAPI)では、Webサイトにアプリケーションを追加しました。 WebアプリケーションのパスとしてWebAPIプロジェクトを格納するフォルダへの物理パスを使用しています。これは間違いありませんか?角度アプリとwebAPIアプリがお互いに会話できるようにすれば十分ですか? AngularJSアプリはWebAPIアプリと通信していないようです。 IISからWebサイトを参照すると、正しいページが表示されますが、データは表示されません。私は何が欠けていますか?どんな助けもありがとう。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) + "]"); 
     } 

    } 
} 

答えて

0

まず、ブラウザでF12。

  1. )($ scope.eventsの=のeventData.getAllEventsためにconsole.logにしてみてください。 CORSバックエンド(ウェブAPI)

    問題についても

  2. チェックは、このコードのように、修正する:

    app.UseCors(Microsoft.Owin.Cors Startup.cs

    に。 CorsOptions.AllowAll);

グッドラック:)

関連する問題