【问题标题】:ASP.NET Web API 2 Same Route Name Different POST Model TypeASP.NET Web API 2 相同的路由名称不同的 POST 模型类型
【发布时间】:2018-05-28 10:50:29
【问题描述】:
我试图在 API 控制器上使用两个具有相同 [Route] 名称但参数类型不同的操作方法。一个接受特定对象,另一个接受该对象类型的数组。
模型绑定器似乎无法区分这些,并且返回以下错误:
Multiple actions were found that match the request
有没有办法让两个 POST 方法具有相同的路由但参数类型不同?
【问题讨论】:
标签:
asp.net
asp.net-web-api
http-post
asp.net-web-api2
model-binding
【解决方案1】:
您不能有 2 个具有相同路由和相同 http 动词(如 Post)的操作。
而且我认为在这个例子中使用不同的路由会更好:
/api/controllerName/PostType
/api/controllerName/PostListType
将来它会更易读和更容易维护。当其他人创建客户端应用程序时,路由将不言自明。
【解决方案2】:
使用路线
[RoutePrefix("api/FooModule")]
public class FooController:ApiController
{
[Route("Get"),HttpGet]
public IHttpActionResult Get(){...}
[Route("GetOther"),HttpGet]
public IHttpActionResult GetOther(){...}
}