【发布时间】:2018-10-11 11:04:10
【问题描述】:
我有两个带有以下路由 url 的 web api 方法
[HTTPGET]
[Route("{Code}/{Id}")]
[HTTPGET]
[Route("{Code}/counter")]
Request /01/counter
{Id} 也是一个字符串参数。因此,我现在在调用 Second api 时遇到错误。 “为此 URL 找到多个控制器操作”,因为 webapi 认为 /01/counter 对两个路由都有效。
我见过很少的正则表达式解决方案,但还没有找到一个可行的解决方案。有什么好的解决方案可以让两个 Url 都能按预期工作。
更新:
我发现问题正在发生,因为这两种方法位于不同的控制器中,因此 webapi 在决定选择哪个控制器时遇到问题。一旦我将它们移动到同一个控制器中,问题就解决了,因为在控制器修复后检查路由参数。
【问题讨论】:
-
这似乎是一个设计问题,为什么不为id设置另一个级别,这样不同资源的路由就不一样了?我的意思是将
[Route("{Code}/{Id}")]替换为[Route("{Code}/Id/{Id}")] -
更改路线是一种选择。但可能是最后一个。因为从逻辑上讲,两者都是不同的路线。一个是有两个参数,另一个是一个。有什么解决办法。
-
您使用的是哪个版本的 WebAPI?
标签: c# asp.net-web-api