我正在使用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具有相同的参数,我可以进行以下调用:
控制器名称/ en(与第一个get方法匹配)
controller-name / en / details / 1(与details方法匹配)
但是当我尝试:
控制器名称/ en / random / 5
我收到错误消息,未在控制器上找到任何操作方法,该如何解决。
提前致谢
Web API严格要求将路由变量与参数名称匹配。您可以尝试将操作更改为以下内容(此处我们为该count
参数的别名):
[HttpGet]
public IQueryable<RecipeDTO> Random(string lang, [FromUri(Name = "id")]int count)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句