我正在使用 asp.net web api 构建一个 Http 服务,我在控制器中有两个具有相同参数的 get 方法,我不知道如何定义匹配这两种方法的路由,我只能调用其中一个和对于另一个我收到一个错误,即在控制器上找不到任何操作方法。这是定义的路线
RouteTable.Routes.MapHttpRoute(
name: "default",
routeTemplate: "{controller}/{lang}",
defaults: new { lang = System.Web.Http.RouteParameter.Optional });
RouteTable.Routes.MapHttpRoute(
name: "details",
routeTemplate: "{controller}/{lang}/{action}/{id}");
以及控制器中的方法:
public IQueryable<RecipeDTO> Get(string lang)
{
}
[HttpGet]
public RecipeDTO Details(string lang, int id)
{
}
[HttpGet]
public IQueryable<RecipeDTO> Random(string lang, int count)
{
}
您会看到方法 Details 和 Random 具有相同的参数,我可以进行以下调用:
controller-name/en(匹配第一个 get 方法)
controller-name/en/details/1 (匹配 details 方法)
但是当我尝试时:
控制器名称/en/random/5
我收到错误,在控制器上找不到任何操作方法,我该如何解决。
提前致谢