Multiple actions were found that match the request

Web API错误信息:

{"Message":"An error has occurred.","ExceptionMessage":"Multiple actions were found that match the request: \r\nSystem.Collections.Generic.IEnumerable`1[Lybing.Invoice.DataContract.Product] Get(Lybing.Invoice.Business.Model.ProductSearch) on type Lybing.Invoice.Web.ApiControllers.ProductController\r\nSystem.Collections.Generic.IEnumerable`1[Lybing.Invoice.DataContract.Product] GetAll() on type Lybing.Invoice.Web.ApiControllers.ProductController\r\nSystem.Collections.Generic.IEnumerable`1[Lybing.Invoice.DataContract.Product] Get() on type Lybing.Invoice.Web.ApiControllers.ProductController","ExceptionType":"System.InvalidOperationException","StackTrace":"   at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n   at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n   at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage request, CancellationToken cancellationToken)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)"}

原来默认的API路由为:

routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });

修改routTemplate:

routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });

恢复正常。

时间: 2024-10-16 21:40:10

Multiple actions were found that match the request的相关文章

Multiple actions were found that match the request Web API

在WebAPI工程入口不对外公开的接口不能使用public. [HttpPost] public string PostRequest([FromBody] Model model) { /// } //Validate方法是不对外公布的,得弄成私有的. private bool Validate(Model model) { return true; }

Multiple types were found that match the controller named 'Home'. (weird error)

found the error, because I changed the namespace and assembly name, then on the bin folder the old dll was still there, so it looks like the mvc engine searches for controllers in the entire bin folder. 也就是说报此错误的可能原因是bin目录下有就的dll产生了干扰. http://stackov

MVC 区域内默认控制器不能访问(Multiple types were found that match the controller named ‘Index')

异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 错误信息 和主页的默认控制器冲突了,修改下Areas里面的默认控制器就可以了 MVC 区域内默认控制器不能访问(Multiple types were found that match the controller named 'Index')

Asp.Net WebAPI Get提交、Post提交处理

1.启用跨域提交 <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Methods" value="GET, POST" /> </custom

初试ASP.NET Web API/MVC API(附Demo)

参考页面: http://www.yuanjiaocheng.net/webapi/media-formatter.html http://www.yuanjiaocheng.net/webapi/webapi-filters.html http://www.yuanjiaocheng.net/webapi/create-crud-api-1.html http://www.yuanjiaocheng.net/webapi/create-crud-api-1-get.html http://ww

那些年踩过的WebAPI的坑(一)

---恢复内容开始--- Visual Studio创建一个web项目, 在下一步的时候创建WebAPI项目的时候勾选web API之后,系统会生成一个web项目. 首先看一下webapi的路由配置,在App_start/webapiconfig.cs中,可以看到如下代码: 1 public static void Register(HttpConfiguration config) 2 { 3 // Web API configuration and services 4 5 // Web A

ASP.NET Web API(MVC API)

ASP.NET Web API是??一个框架,可以很容易构建达成了广泛的HTTP服务客户端,包括浏览器和移动设备.是构建RESTful应用程序的理想平台的.NET框架. 上面是微软对Web API给出的定义,其中包含两个关键字:HTTP和RESTful,其实从这一方面,大家就可以看出Web API和它的同胞兄弟:WebService和WCF有些不同了. HTTP 对于HTTP大家都不是很陌生,因为我们每天浏览网页填写的URL就是HTTP开头,但只是知道有这个东西,确没有想过它是什么,就好像我们对

Abp中SwaggerUI的多个接口文档配置说明

对外提供的接口在实际生成过程中,可能是需要一个接口版本的,比如说v1,manage.效果如下: 在swagger中怎么实现呢? 1. 添加SwaggerVersionHelper.cs public class SwaggerVersionHelper { public static bool ResolveVersionSupportByRouteConstraint(ApiDescription apiDesc, string targetApiVersion) { var attr = a

在 ASP.NET Web API 中,使用 命名空间(namespace) 来作为路由的参数

这个问题来源于我想在 Web API 中使用相同的控制器名称(Controller)在不同的命名空间下,但是 Web API 的默认 路由(Route) 机制是会忽略命名空间的不同的,如果这样做,会看到以下提示: 找到多个与名为"XXX"的控制器匹配的类型.如果为此请求("{namespace}/{controller}/{action}")提供服务的路由找到多个控制器,并且这些控制器是使用相同的名称但不同的命名空间定义的(这不受支持),则会发生这种情况. 在 AS