Отладка маршрутов ASP.NET Web API с помощью Route Debugger

| Понедельник, 29 апреля, 2013

Метки: ASP.NET Web API Комментарии: 0

Как использовать отладчик маршрутов?

Пример 1: Не указано имя контроллера

Проблема: URL не соответствует маршруту MachineApi. Контроллер и маршрут показаны ниже.

Контроллер:

public class MachineController : ApiController
{
     public IEnumerable<Machine> Get()
    {
        return new List<Machine>{
             new Machine    {
               ...
             }
         };
     }
  
     public IEnumerable<Machine> All(string code)
     {
         return new List<Machine>
         {
          new Machine
             {
               ...
             }
         };
     }
 }

Маршрут:

config.Routes.MapHttpRoute(
     name: "MachineApi",
     routeTemplate: "api/machine/{code}/all"
 );
  
 config.Routes.MapHttpRoute(
     name: "DefaultApi",
     routeTemplate: "api/{controller}/{id}",
     defaults: new { id = RouteParameter.Optional }
);

Тестируем http://localhost/api/machine/somecode/all в отладчике маршрутов:

Обзор результатов:

  1. Код ответа HTTP – 404 (Ресурс не найден);
  2. Выделен маршрут "Api/Machine/{Code}/All", так как шаблон подходит для URL.
  3. Не выбран ни один контроллер.

Анализ:

Отладчик маршрутов показывает, что не найдено значение “controller” в данных маршрутов или в значениях по умолчанию, а выбор нужного контроллера зависит от этого значения и оно должно быть задано.

Решение:

Нужно добавить значение по умолчанию для указания контроллера.

config.Routes.MapHttpRoute(
    name: "MachineApi",
    routeTemplate: "api/machine/{code}/all",
    defaults: new { controller = "Machine" }
);

После этого изменения ответ HTTP будет 200, контроллер и метод действия найдены и выделены зеленым цветом.

 

Комментарии
Никто еще не оставил здесь комментарий.
Войдите, чтобы написать комментарий , или воспользуйтесь формой ниже.
 

Copyright © CodeHint.ru 2013-2020