2014-11-19 2 views
1

Это отображение маршрута не работает:маршрутизации на жестко прописанных контроллер

configuration.Routes.MapHttpRoute(
    "EnvironmentTargetsView", 
    "api/EnvironmentTargetsView/{id}/{userGuid}", 
    new 
    { 
    id = RouteParameter.Optional, 
    userGuid = RouteParameter.Optional, 
    }); 

Я получаю сообщение об ошибке: «Нет пути обеспечения имя контроллера не было найдено в соответствии с запросом URI»

Однако, это отображение маршрута делает работу:

configuration.Routes.MapHttpRoute(
    "EnvironmentTargetsView", "api/{Controller}/{id}/{userGuid}", 
    new 
    { 
    Controller = "EnvironmentTargetsView", 
    id = RouteParameter.Optional, 
    userGuid = RouteParameter.Optional, 
    }); 

Мне любопытно, почему и перемещался ответы на здесь, но не могу понять это. Я хочу жестко закодировать это значение, потому что это конкретный маршрут, который я хочу получить API. Мое беспокойство заключается в том, что он был помечен в методе routeTemplate, теперь я не могу использовать маршрут с похожим шаблоном.

+0

Добро пожаловать в StackOverflow! См. [«Если вопросы включают« теги »в их названиях?») (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), где консенсус «нет, они не должны». –

ответ

2

Это потому, что вы указали:

Controller = "EnvironmentTargetsView" 

во втором блоке кода. Если вы добавите это в первый блок кода, он будет работать и по-прежнему будет иметь жесткое кодированное значение.

Вы также можете просто добавить что-то вроде:

[Route("/api/EnvironmentTargetsView/{id}/{userGuid}] 
public void Get(int id, guid userGuid) { } 

ваши методы контроллера.

+0

Определенно правильный ответ для меня, но все еще любопытно, почему это может быть. Я спрашиваю, потому что у меня есть второй маршрут, который использует метод, который я описываю в моем первом блоке, и он работает успешно. –

+0

Ну, маршрутизатор не имеет понятия, какой контроллер должен принимать только на основе «api/EnvironmentTargetsView», это просто строка. Вот почему есть настройки по умолчанию, чтобы дать маршрутизатору подсказку. Второй блок также должен работать без подсказки, если EnvironmentTargetsViewController является первым найденным контроллером. –

Смежные вопросы