新建了一个abp的web 项目,当我尝试调用WebApi的方法时,一直收到此错误
在 WebApi 中找到了与该请求匹配的多个操作
我一直在网上寻找其他类似问题,我有2个不同名称的方法,并使用“ HttpGet”属性,例如:
[HttpGet]
public HttpResponseMessage Summary(MyVm vm)
{
return null;
}
[HttpGet]
public HttpResponseMessage FullDetails()
{
return null;
}
最终找到的原因和解决方案是:路由设置问题
默认的web api路由是这样的:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
但是,为了使用相同的http方法执行多个不同操作,您需要通过按如下方式进行修改路由:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
如果确实不需要action url参数,可以通过不同参数来实现:
例如,您的两种方法可以变成:
public HttpResponseMessage Get()
{
return null;
}
public HttpResponseMessage Get(MyVm vm)
{
return null;
}