я создал новый проект Web API и создал следующие маршрутизации спецификации (на самом деле я упростил, глядя на ошибку):Web API разрешает только один контроллер
// Web API configuration and services
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}"
);
Когда я делаю вызов через AJAX с маршрут:
/api/account/GetSUID/0
все работает нормально. Когда я просто использовать другой контроллер:
/api/tile/GetTileSet/0
он возвращает статус 200, но вместо удара моего контроллера, он просто возвращает содержимого страницы по умолчанию в jqXHR.responseText! Это похоже на то, что он просто пропускает любую API-маршрутизацию, например, я запрашиваю страницу сайта по умолчанию.
Я озадачен этим, так как в течение нескольких последних лет я написал буквально сотни функций веб-API в нескольких других проектах. У меня никогда не было проблем с вызовами нескольких контроллеров. Я выглядел высоко и низко для того, что может происходить здесь, и я надеюсь, что у кого-то здесь может быть идея.
Вот метод выборки на контроллере:
[HttpGet]
public HttpResponseMessage CheckRequestedID(int id, [FromUri]string Search)
{
if (!BSDIUtil.HasAllAcceptableCharacters(Search))
return Request.CreateResponse(HttpStatusCode.BadRequest);
if (FolderModel.IDAlreadyExists(DAL, Search)) // We can check this because this function is only called when staff members are creating accounts for other people (participants always use their email).
return Request.CreateResponse(HttpStatusCode.OK, false);
else
return Request.CreateResponse(HttpStatusCode.OK, true);
}
Это будет работать, если на контроллере счета, но не на контроллере плитки.
Еще одна вещь, я использую «Community» выпуск Visual Studio и Windows, 8,1
Возможно, ваш браузер кэшировал ответ ... вы можете попробовать установить параметр «cache: false», если вы используете jquery для отправки запроса AJAX. – nemesv
Можете ли вы поделиться определениями своих методов действий (включая любые атрибуты)? Я предполагаю, что вы подтвердили, что запрос действительно подходит к правильному URL (т. Е. Это не проблема на стороне клиента)? –
nemesv - когда я переключаю контроллер на «учетную запись», вызов выполняется успешно, поэтому он не может быть проблемой кэширования. Ant - будет делать. Все вызовы являются относительными, и если я изменяю документ по умолчанию, возвращается новый по умолчанию. –