请求匹配多个动作,导致 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
我的项目中有一条简单的路线:
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