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

时间:2015-12-15 12:08:24

标签: c# asp.net-core asp.net-core-mvc asp.net-core-routing

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

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这样的网址时,它不起作用,因为框架无法区分两个动作。据我所知,它在普通的web api中运行得非常好,因为很明显这个url只根据它的参数匹配其中一个动作。我做错了什么或者新的MVC6不支持它?

1 个答案:

答案 0 :(得分:2)

  

我做错了什么或新MVC6不支持?

MVC操作选择器在选择操作期间不要考虑Action的参数。因此,您不能有两个操作对应一个路径模板。除了动作有不同的动作约束(HttpPost,HttpGet)。

代码中的

Choose action logic

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