Получение ответа 404 от маршрута WebAPI, размещенного в Sitecore

#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, мы обычно используем параметры через параметры строки запроса.