【发布时间】:2017-07-25 11:37:43
【问题描述】:
我有现有的 ASP.NET WebAPI,我想迁移到 ASP.NET Core WebAPI,但在路由方面遇到了一些问题。
API 已被许多客户端使用,我无法更改路由(或 URL)。我们有一个控制器(比如 ValuesController),它有 2 个 Get 方法,但参数不同:
public async Task<IEnumerable<string>> Get(int xId, int yId)
public async Task<IEnumerable<string>> Get(int xId, int yId, int aId, int bId)
在当前场景(ASP.NET WebAPI)中,所有客户端都可以根据不同的参数调用这两种方法,例如:
对于第一个调用方法,可以请求URL:
http://localhost:4040/api/Values?xId=1&yId=2 和第二个,您可以请求 URL:http://localhost:4040/api/Values?xId=1&yId=2&aId=3&bId=4。它由 ASP.NET WebAPI 可用的当前路由自动决定
但是在 ASP.NET Core 的情况下,如果我请求相同的 URL,它会抛出 Microsoft.AspNetCore.Mvc.Internal.AmbiguousActionException: Multiple actions matched 异常。
在不更改每个客户端应用程序的请求调用的情况下有任何可能的解决方案吗?
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api asp.net-core asp.net-routing