У меня возникла проблема с вызовом веб-API из приложения angular/hotowel, где контроллер веб-API использует маршрутизацию на основе атрибутов. В настоящее время мне интересно, мешает ли angular, но, честно говоря, я понятия не имею, как это подтвердить.
Мой метод обслуживания выглядит следующим образом:
function getAllOrganizations() {
return $http.get('api/organizations').then(function (result) {
return result.data;
});
}
Он возвращает 404, когда он вызывается:
GET http://localhost/admin/api/organizations 404 (Not Found)
Здесь я должен упомянуть, что приложение размещено в виртуальном каталоге «admin». Проверяя мои маршруты с помощью route.axd, я вижу, что все в порядке (методы = GET, HEAD, OPTIONS, Url = api/organizations и т. д.), соответствующие моему методу/атрибуту (я пробовал это как с ведущим '/', так и без него). без эффекта):
[GET("/api/organizations")]
[HttpGet]
public string GetAllOrganizations()
{
return "it worked";
}
Есть идеи, что происходит? Какая еще информация будет полезна?
ОБНОВЛЕНИЕ
Возвращение к IIS Express вызвало ошибку в следующих строках:
"Запись ограничения" inboundHttpMethod" на маршруте с шаблоном маршрута "api/Contacts/{id}" должна иметь строковое значение или иметь тип, который реализует "IHttpRouteConstraint"
Устранив это с помощью здесь, запустив этот в IIS Express работает.
(И в последующем тесте перенос приложения на собственный веб-сайт также заставляет его работать...)
Так что, возможно, есть проблема с маршрутизацией на основе атрибутов в виртуальном каталоге — это звонит в колокол?