【发布时间】:2016-12-01 14:06:48
【问题描述】:
我有:
[RoutePrefix("api/Order")]
public class OrderController : ApiController
{
[Route("~/api/Order/{id}")]
[Route("~/api/ManualOrder/{id}")]
[HttpGet]
public Task<HttpResponseMessage> Get(Guid id)
{
//Implementation
}
[Route("ExampleOtherNormalMethod")]
[HttpGet]
public Task<HttpResponseMessage> ExampleOtherNormalMethod()
{
//Implementation
}
}
还有:
[RoutePrefix("api/ManualOrder")]
public class ManualOrderController : ApiController
{
//Other methods
}
路由重写使用的策略是让名为“/api/Order/1”或“/api/ManualOrder/1”的“Get”方法都指向“OrderController”,这是可行的。
问题是当我在“ManualOrder”中请求任何其他方法时,我认为它会丢失并且无法解决并返回异常:
找到多个与 URL 匹配的控制器类型。如果多个控制器上的属性路由与请求的 URL 匹配,就会发生这种情况。 该请求找到了以下匹配的控制器类型: Project.ProxyAPI.Controllers.ManualOrderController Projects.ProxyAPI.Controllers.OrderController
有谁知道如何在不复制两个控制器上的“Get”方法的情况下解决这个问题?
P.s:这是一个假设的例子。
【问题讨论】:
标签: c# asp.net-web-api routes