请求匹配多个操作,导致ASP.NET 5/MVC 6中具有不同参数的操作不明确

Ily*_*dik 5 c# asp.net-core-mvc asp.net-core asp.net-core-routing

我的项目中有一条简单的路线:

routes.MapRoute(
      name: "api",
      template: "api/{controller}/{action}");
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我有两个动作:

    [HttpGet]
    public string Get(string value)
    {
        return value;
    }

    [HttpGet]
    public string Get(int id)
    {
        return id.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试做一个像api/controller/get?id=1它不起作用的URL ,因为框架无法区分两个动作.据我所知,它在普通的web api中运行得非常好,因为很明显这个url只根据它的参数匹配其中一个动作.我做错了什么或新的MVC6不支持?

Sta*_*cev 3

是我做错了什么还是新的 MVC6 不支持它?

MVC 操作选择器在选择操作期间不考虑操作的参数。因此,不能让两个操作对应一个路由模板。除了例如操作具有不同的操作约束(HttpPost、HttpGet)。

在代码中选择操作逻辑

理论上,基于参数的某些操作之间的选择逻辑必须进入 SelectBestActions 方法,但它什么也不做