【发布时间】:2021-06-24 14:18:38
【问题描述】:
我试图找出这两个框架中 URL 匹配的不同之处
我知道以下对于 ASP.Net Web API 是正确的,想知道对于 ASP.NET 核心也是如此吗?
-
如果没有明确指定,则用于派生 HTTP 方法的操作名称,例如
public int GetById(int Id);这里没有指定 HTTP 方法,但由于约定,它只会匹配获取请求
-
如果没有指定 HTTP 方法并且它也不能从动作名称派生,那么默认是 POST
-
参数也参与匹配 URL ,如下所示
// GET api/values/get public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/get/5 public string Get(int id) { return "value"; }上述代码在 ASP.Net Web API 中运行良好,但在 ASP.NET Core 中出现以下异常
AmbiguousActionException:匹配多个动作。
ASP.Net Web API 路由
注意:我知道如何修复错误,想知道 ASP.Net Core 的 URL 匹配发生了什么变化 算法。
【问题讨论】:
-
请说明您在这两种情况下是如何配置路由的。
-
使用路线详情编辑问题
-
您使用的是哪个版本的 .Net core?
UseMvc已旧 (2.0)。 -
2.1,但我觉得当前版本的行为也会相同。
-
仅当您使用 url
/api/values/get时才会引发模棱两可的错误。实际上,asp.net core中的这种新行为更有意义,我不太确定旧的 asp.net 是否与您可能错误地假设的不同。错误的假设无处不在。
标签: c# asp.net-core asp.net-web-api asp.net-core-webapi asp.net-web-api-routing