Используйте mvc маршрутизацию для псевдонима действия - PullRequest
0 голосов
/ 14 января 2019

У меня есть ApiController под названием MyControllerName и действие MyActionName. URL для вызова этого метода: api/MyControllerName/MyActionName Я хотел бы добавить маршрут, чтобы этот метод также был доступен по второму пути: api/MyControllerName/SecondActionName

Я пытался создать такой маршрут:

config.Routes.MapHttpRoute(
                name: "AbsoleteApiRedirect",
                routeTemplate: "api/MyControllerName/SecondActionName",
                defaults: new { id = RouteParameter.Optional, controller = "MyControllerName", action = "MyActionName" }
            );

Но это не работает. Метод недоступен по этому пути. В обоих случаях методы будут иметь параметры. Каким должен быть путь для доступа метода к двум разным URL-адресам?

1 Ответ

0 голосов
/ 14 января 2019

Похоже, ваш маршрут зарегистрирован после маршрута по умолчанию или другого маршрута, который также соответствует вашему URL.

MVC всегда выбирает первый маршрут, который соответствует указанному URL. Рассмотрим вариант по умолчанию: он имеет вид широкого шаблона и, следовательно, соответствует множеству URL-адресов, включая тот, который у вас есть в вопросе. Таким образом, при добавлении маршрутов в коллекцию Routes убедитесь, что перед ней стоят конкретные:

config.Routes.MapHttpRoute(
    name: "AbsoleteApiRedirect",

....

config.Routes.MapHttpRoute(
    name: "API Default",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...