【发布时间】:2016-08-03 08:47:36
【问题描述】:
我正在构建一个 web api,其中我有一个资源必须有 3 个 get 方法,如下所示:
[HttpGet]
[Route("{city}/{streetName}/{streetNumber}/{littera}")]
public IActionResult GetByAddress([FromQuery]string city, [FromQuery]string streetName, [FromQuery]int streetNumber, [FromQuery]string littera)
{
var model = _availabilityService.FindByAddress(city, streetName, streetNumber, littera);
return Ok(model);
}
[HttpGet("{pointId}")]
public IActionResult GetByPointId(string pointId)
{
var model = _availabilityService.FindByPointId(pointId);
return Ok(model);
}
[HttpGet]
[Route("{xCoordinate}/{yCoordinate}")]
public IActionResult GetByCoordinates([FromQuery]decimal xCoordinate, [FromQuery]decimal yCoordinate)
{
var model = _availabilityService.FindByCoordinates(xCoordinate, yCoordinate);
return Ok(model);
}
只有一个参数(pointId)的 get 方法工作正常,因为它不被视为查询字符串,而是 id。然而其余的 2 种方法似乎在 ASP.NET 中的路由器无法区分。
我真的很茫然,无法弄清楚为什么它不起作用。我能够解决的是,如果我删除其中一种方法,另一种方法可以正常工作。
关于我做错了什么有什么建议吗?
仅供参考,对应的 url:s 应该如下所示:
api/1.0/availabilities?city=Metropolis&streetName=Superstreet&streetNumber=1&littera=A
和
/api/1.0/availabilities?xCoordinate=34.3444&yCoordinate=66.3422
谢谢!
【问题讨论】:
-
当你说它不起作用时,你通过调用另外两个动作究竟得到了什么? 404?
-
@jpgrassi:我刚刚收到 500 个内部服务器错误。我使用了调试器,发生的事情是甚至从未到达端点,所以我的结论是我的路由混乱和混乱。 :(
标签: c# asp.net-core asp.net-core-routing