У меня есть следующий маршрут:Asp.NET Web Api 2 Routing
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{service_name}/{controller}/{id}",
defaults: new { service_name = "identity", id = RouteParameter.Optional }
);
Я хочу этот маршрут, чтобы работать только со следующим шаблоном (имя службы всегда должна быть личность):
api/identity/{anyController}/{id}
Теперь я мог бы сделать это, просто изменив свой шаблон маршрута к
routeTemplate: "api/identity/{controller}/{id}",
, но тогда я не смог бы прочитать «Servi ce_name "от Request.GetRouteData();
, так как это не названный параметр.
Есть ли более простой способ сделать это, а не создавать ActionFilter, который будет фильтровать все запросы, имя службы которых не является «Идентичность» в этом случае.
Невозможно понять, если вы переходите на «api/identity/{controller}/{id}», нет имени_сервера)) –
@ ElvinMammadov, если вы жестко задаете шаблон для 'api/identity', когда вы пытаетесь проверить имя_службы в словаре RouteData нет записи с ключом 'service_name'. – Robert
Вместо использования конфигурации маршрута вы можете использовать маршрутизацию атрибутов. Это хороший способ настройки маршрута. –