У меня есть этот контроллер WebAPI, имеющий 2 метода. Этот контроллер является скорее контроллером типа утилиты, и на самом деле не фокусируется на одном типе сущности, как и большинство примеров и шаблон плиты котла. Во всяком случае, мои 2 методы являются чем-то вроде этого:Web Api 2.0 Маршрутизация - несколько действий, соответствующих
// api/Custom/SayHello
[HttpGet]
public async Task<string> SayHello()
{
return await Task.FromResult("Hello World Async").ConfigureAwait(false);
}
// api/Custom/SayFloat
[HttpGet]
public async Task<float> SayFloat()
{
return await Task.FromResult(1000.0f).ConfigureAwait(false);
}
И я прошел через много маршрутизации комбинации шаблонов, и моя последняя одна такая:
config.Routes.MapHttpRoute("DefaultApiWithId",
"Api/{controller}/{id}",
new { id = RouteParameter.Optional });
/* ----- this is trying to match my utility controller and its actions ----- */
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "Api/{controller}/{action}"
);
Я получаю эту ошибку : Было найдено несколько действий, которые соответствуют запросу ....
Таким образом, мое текущее «обходное решение» - это создать один контроллер для каждого метода утилиты, который я хочу открыть. Я думаю, что есть что-то, что я не пробовал с шаблоном маршрутизации. Есть идеи?
Я согласен, Атрибут Маршрутизация - лучший способ пойти, если вы используете WebApi2. –