我有這個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,屬性路由是最好的方法。 – 2014-11-21 10:14:17