2016-10-03 23 views
0

私は、ASP.NET MVC、AngularJs、およびWebApi 2.0を使用するプロジェクトに取り組んでいます。私はangularjsからWeb APIコントローラを呼び出しています。私は最初のWeb APIのコントローラを作成する必要があります。 だから私は、次のコードを追加し、global.asaxでstart_applicationを更新:Asp.netのAngularjs MVCプロジェクトweb apiコントローラを呼び出す

public static void Register(HttpConfiguration config) 
{ 
    // Web API configuration and services 

    // Use camel case for JSON data. 
    //config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

    // Web API routes 
    config.MapHttpAttributeRoutes(); 

    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 
} 

それから私は、最初のWeb APIコントローラ私はフォルダcontroller内でそれを作成したが、それは動作しませんでしたし、私はそれが思った(最初の時間を作成しました)MVCルーティングと競合して行くので、私は、フォルダWebApi\Controllersを作成しました:

[Route("api/Countries")] 
public class CountriesController : ApiController 
{ 
    [HttpGet] 
    public IHttpActionResult GetCountries() 
    { //<-- Here, I put a breakpoint and never go in 
     return Ok(); 
    } 
} 

私はangularjsに工場を作成しました:

intranet 
    .factory("countriesService", function ($resource, ENDPOINT) { 
     return { 
      countries: $resource(ENDPOINT + "api/Countries/") 
     }; 
    }); 

と私は、角度コントローラでサービスを呼び出す:

$scope.getCountries = function() { 
    new countriesService 
      .countries 
      .query({ }, getCountriesSuccess, getCountriesError); 
}; 

私は次のエラー得る:

angular.js:9818 GET http://localhost:50407/api/Countries 404(見つかりません)

+0

はい、見つかりませんでした...私はそれがルーティングの問題だと思っています...またはおそらくWeb APIの設定に関する問題 – Ciccio

答えて

0

私は設定の順序をルーティングは非常に重要です...私の構成は

AreaRegistration.RegisterAllAreas(); 
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
RouteConfig.RegisterRoutes(RouteTable.Routes); 
BundleConfig.RegisterBundles(BundleTable.Bundles); 
GlobalConfiguration.Configure(WebApiConfig.Register); 

次のようになります

AreaRegistration.RegisterAllAreas(); 
GlobalConfiguration.Configure(WebApiConfig.Register); 
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
RouteConfig.RegisterRoutes(RouteTable.Routes); 
BundleConfig.RegisterBundles(BundleTable.Bundles); 
関連する問題