【发布时间】:2020-03-03 12:09:48
【问题描述】:
我尝试将 ASP.NET WEB API 转换为 ASP.NET CORE WEB API 并出现错误
我在 ASP.NET WebAPI 中的代码
public class TestController : ApiController
{
// GET /test
public object Get()
{
return "get";
}
// GET /test?id={id}
public object Get(string id)
{
return id;
}
// GET /test?id={id}&anyParam={anyParam}
public object Get(string id, string anyParam)
{
return id + anyParam;
}
}
config.Routes.MapHttpRoute("Controller", "{controller}");
尝试将其转换为 ASP.NET Core 2.1 / 3.0
[ApiController]
[Route("{controller}")]
public class TestController : ControllerBase
{
// GET /test
public object Get()
{
return "get";
}
// GET /test?id={id}
public object Get(string id)
{
return id;
}
// GET /test?id={id}&anyParam={anyParam}
public object Get(string id, string anyParam)
{
return id + anyParam;
}
}
services.AddControllers();
app.UseRouting();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
我在 ASP.NET Core 中有
AmbiguousMatchException:请求匹配多个端点
【问题讨论】:
-
看看这个
endpoints.MapControllerRoutein docs.microsoft.com/cs-cz/aspnet/core/migration/… -
@daremachine 尝试与
endpoints.MapControllerRoute("Controller", "{controller}");相同的错误AmbiguousMatchException:请求匹配多个端点 -
我希望他们在 Web API 中抛出异常,因为在 Swagger 定义中具有相同名称但不同参数的多个端点是不合法的。解决此问题的最佳方法是为每个操作指定不同的名称或将每个操作移至新控制器。
-
不应该是
[controller]而不是{controller}吗?只是我的快速印象。 -
@Kit 我发现没关系
标签: asp.net-core asp.net-core-webapi asp.net-core-2.1 asp.net-web-api-routing