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

Request matched multiple actions resulting in ambiguity for actions with different parameters in ASP.NET 5 / MVC 6

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

routes.MapRoute(
      name: "api",
      template: "api/{controller}/{action}");

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

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

    [HttpGet]
    public string Get(int id)
    {
        return id.ToString();
    }

现在,当我尝试执行 api/controller/get?id=1 之类的 url 时,它不起作用,因为框架无法区分两个操作。据我所知,它在普通网络 api 中确实运行良好,因为很明显,此 url 仅匹配基于其参数的操作之一。是我做错了什么还是新的 MVC6 不支持它?

Did I do something wrong or it's not supported in the new MVC6?

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

Choose action logic 在代码中。

理论上,一些基于参数的动作之间的选择逻辑必须进入 SelectBestActions 方法,但是 it do nothing