Я работаю над проектом, использующим ASP.NET MVC, AngularJs и WebApi 2.0. Я вызываю контроллер веб-api из angularjs. Я должен создать первый веб-контроллер api. Так что я обновил start_application в global.asax
, добавив следующий код:Angularjs in Asp.net MVC project call web api controller
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 }
);
}
Затем я создал контроллер первого веб-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 ПОЛУЧИТЬ http://localhost:50407/api/Countries 404 (Not Found)
Да, не найдено ... Я думаю, что это проблема маршрутизации ... или, возможно, проблема с конфигурацией web api – Ciccio