#asp.net-web-api #sitecore
#asp.net-web-api #sitecore
Вопрос:
Когда я выполняю вызов моего пользовательского маршрута WebAPI, размещенного в Sitecore 8.0, я получаю ответ 404 с пустым телом. Я подключил отладчик, и метод контроллера не вызывается.
Я следовал инструкциям здесь, чтобы настроить маршрут для стандартного контроллера WebAPI, размещенного на веб-сайте Sitecore. Моя конфигурация Sitecore состоит из Sitecore 8.0 EXM, Experience Analytics и Experience Extractor. В методе обработки AbortSitecoreForKnownRoutes я вижу, что данные маршрута сопоставлены. Если я ввожу недопустимый URL-адрес api2, я получаю 404 с телом сообщения, которое я ожидал. В журналах Sitecore или журнале событий нет ничего, что соответствовало бы этому запросу.
Кажется, что что-то перехватывает запрос. Я пробовал исправлять в начале и в конце конвейера httpBeginRequest, но безрезультатно.
У меня есть следующий маршрут:
config.Routes.MapHttpRoute(
"Get By Id Route",
"api2/{controller}/{id}",
new { action = "GetById"}
);
Url: http:///ap2/foo/2431243ouidsafj
Контроллер:
[HttpGet]
public class FooController : ApiController
{
public string GetById(string id)
{
return id;
}
}
Как мне это решить?
Комментарии:
1. какую маршрутизацию вы вызываете и где ваш код для объявления контроллера?
2. http://<имя хоста>/api2/foo/2342143asdflkas Контроллер наследуется от ApiController и объявляется в проекте веб-сайта. Код и маршрут работают в режиме ожидания asp.net проект mvc.
3. у нас определена аналогичная маршрутизация, единственное отличие, которое я вижу, это то, что мы отметили id как необязательный параметр. «RouteTable. Маршруты. MapHttpRoute(«DefaultApi», «api/{controller}/{action}/{id}», new { id = параметр маршрута. Необязательно });». Использование /{id} в качестве части пути иногда не работает в SC, мы обычно используем параметры через параметры строки запроса.