【发布时间】:2018-03-10 17:13:19
【问题描述】:
我想构建真正的 RESTful Web 服务,所以不想利用 RPC 样式,所以目前有这个:
[HttpGet]
[ActionName(nameof(GetByParticipant))]
public async Task<IActionResult> GetByParticipant([FromQuery]string participantId, [FromQuery]string participantType, [FromQuery]string programName)
{
}
[HttpGet]
[ActionName(nameof(GetByProgram))]
public async Task<IActionResult> GetByProgram([FromQuery]string programName)
{
}
而且我相信这可以在 ASP.NET Web API 中使用。但我遇到了一个例外:
AmbiguousActionException:匹配多个动作。以下操作匹配路线数据并满足所有约束:
TermsController.GetByParticipant (ParticipantTerms.Api)
TermsController.GetByProgram (ParticipantTerms.Api)
这两个属性实际上都没有帮助:
[HttpGet][ActionName][FromQuery]
【问题讨论】:
-
使用 from 查询时,您需要唯一区分操作的路线,否则您将获得模棱两可的操作异常。成为
api/action?participantId=1&participantType=2的原因与api/action?programName=x相同
标签: c# asp.net-core .net-core asp.net-core-routing