为什么会抛出异常,因为发现多个与请求匹配的操作
why exception throws as Multiple actions were found that match the request
我是 ASP.NET MVC 的新手,下面是我的 api 控制器:
// API controller named Movie
[HttpGet]
public JsonResult Get()
{
....
}
[HttpGet]
public JsonResult Get([FromQuery]int id)
{
....
}
[HttpGet]
public JsonResult Get([FromQuery]string title, [FromQuery]string category)
{
....
}
然后当我启动应用程序并路由到 localhost/api/movie/123
时,它抛出了一个异常,即 发现多个与请求匹配的操作
但只有第一个动作方法匹配,因为只有一个参数?
您有路由冲突,因为所有这些操作都映射到同一路由,而路由 table 不知道选择哪个。
每个操作的路由必须是唯一的,以避免路由冲突。
为了 localhost/api/movie/123
匹配 Get(int id)
操作,路由模板需要看起来像
//GET api/movie/123
[HttpGet("{id:int}")]
public JsonResult Get(int id) {
//....
}
请注意 [FromQuery]
的删除以及在 id
路由参数
上使用路由约束 {id:int}
第二个动作现在应该不会与第一个动作冲突
//GET api/movie?title=someTitle&category=someCategory
[HttpGet]
public JsonResult Get([FromQuery]string title, [FromQuery]string category) {
//....
}
我是 ASP.NET MVC 的新手,下面是我的 api 控制器:
// API controller named Movie
[HttpGet]
public JsonResult Get()
{
....
}
[HttpGet]
public JsonResult Get([FromQuery]int id)
{
....
}
[HttpGet]
public JsonResult Get([FromQuery]string title, [FromQuery]string category)
{
....
}
然后当我启动应用程序并路由到 localhost/api/movie/123
时,它抛出了一个异常,即 发现多个与请求匹配的操作
但只有第一个动作方法匹配,因为只有一个参数?
您有路由冲突,因为所有这些操作都映射到同一路由,而路由 table 不知道选择哪个。
每个操作的路由必须是唯一的,以避免路由冲突。
为了 localhost/api/movie/123
匹配 Get(int id)
操作,路由模板需要看起来像
//GET api/movie/123
[HttpGet("{id:int}")]
public JsonResult Get(int id) {
//....
}
请注意 [FromQuery]
的删除以及在 id
路由参数
{id:int}
第二个动作现在应该不会与第一个动作冲突
//GET api/movie?title=someTitle&category=someCategory
[HttpGet]
public JsonResult Get([FromQuery]string title, [FromQuery]string category) {
//....
}