я должен использовать рамки 4.0 для создания веб-API, но я не в состоянии сделать запрос:запросы Web API в 4.0 рамках
public class ChartDataApiController : ApiController
{
[HttpGet]
public List<ChartDatum> GetData(int lowerBound, int upperBound)
{
return new List<ChartDatum>();
}
}
У меня есть это в тот момент, как раз, чтобы подтвердить, что я могу фактически ударил это действие. Запрос:
var url = window.location.protocol + "//" + window.location.host + "/api/ChartDataApi/GetData";
$.ajax({
url: url,
type: "GET",
data: {
lowerBound: lowerBound,
upperBound: upperBound
},
dataType: "json",
success: function(response) {
graph.draw(response);
},
error: function(message) {
//error handler logic
}
});
Я просто не могу попасть в это действие. Я попытался преобразовать его в POST, чтобы проверить, не могу ли я заставить его работать, но безрезультатно. Ошибка сервера дает 404 (пришлось изменить, чтобы представить):
GET HTTP: // (URL): порт #/апи/ChartDataApi/GetData LowerBound = 0 & UpperBound = 29 404 (не найдено)
Я могу сделать запрос очень хорошо, пока я не пытаюсь передать какие-либо параметры ни через строку запроса, ни через тело запроса. Я также попробовал префикс параметров с атрибутом [FromUri]
, но это также не сработало.
Вот веб-апи маршрут конфигурации (просто по умолчанию):
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Я сделал эти виды запросов, прежде чем, но всегда в рамках 4.5 и думаю, что это может быть разница между рамками.
Значит, вы не можете ссылаться на действия по имени в 4.0? Я знаю, что это возможно в версии 4.5, но не знал, что это не выполнимо в 4.0. Я хотел бы иметь несколько действий GET на этом контроллере, если это возможно. EDIT: после попытки удалить имя действия, я получаю ту же ошибку. Даже переименовал действие в «Получить». – jokulmorder
, который кажется правильным ... Я помню, что маршрутизация улучшалась между 4.0 и 4.5 для MVC. Думаю, вам придется использовать аннотации метаданных/данных (или просто «атрибуты») больше в 4.0 –
. Это различие на самом деле то, что повернуло меня отключение к разработке apis с использованием маршрутизации MVC .. было намного чище и проще просто добавить страницу IHttpHandler или HttpModule и зарегистрировать файл в качестве поставщика маршрута. Это, по сути, то, что инфраструктура делает за кулисами, если я правильно помню. .. в webforms, это все еще мой метод. –