У меня проблемы с моей маршрутизацией Web.API. У меня есть следующие два маршрута:
config.Routes.MapHttpRoute(
name: "MethodOne",
routeTemplate: "api/{controller}/{action}/{id}/{type}",
defaults: new { id = RouteParameter.Optional, type = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "MethodTwo",
routeTemplate: "api/{controller}/{action}/{directory}/{report}",
defaults: new { directory = RouteParameter.Optional, report = RouteParameter.Optional }
);
И в моем контроллере эти два метода:
[HttpGet]
[ActionName("methodone")]
public string MethodOne(string id, string type)
{
return string.Empty;
}
[HttpGet]
[ActionName("methodtwo")]
public string MethodTwo(string directory, string report)
{
return string.Empty;
}
Эти два, казалось бы, не могут жить бок о бок. Если я прокомментирую маршрут MethodOne в WebApiConfig, работает метод MethodTwo. Метод Commenting MethodTwo позволяет MethodOne работать. Оставляя как uncommented, MethodOne работает, но не MethodTwo.
Я надеялся использовать один маршрут для обоих из них, тогда, похоже, им придется иметь одинаковые имена параметров. Кто пишет методы с именами общих параметров? Плохо. Я действительно не хочу, чтобы мои методы имели одинаковые имена параметров (например, p1, p2, p3), поэтому я решил создать маршрут только для нового метода. Но даже это не работает.
Я действительно скучаю по WebGet(UriTemplate="")
из отдыха WCF.
У меня есть один контроллер, который имеет много методов, некоторые с 1, 2, 3 или даже больше параметров. Я не могу поверить, что не могу использовать значащие имена параметров с помощью подхода MapHttpRoute.
Я могу полностью прокомментировать это и использовать WebGet()
... но до того, как я добрался туда, мне захотелось узнать, не хватает ли чего-то.