目标:在同一控制器内创建两个 httpget 端点:一个用于 OData,一个用于非 OData。
此代码给出错误:AmbigouslyMatchException:请求匹配多个端点。
[Route("api/products")]
[ApiController]
public class ProductsController : ControllerBase
{
// OData enabled endpoint
[EnableQuery]
[HttpGet]
public IActionResult GetAllProducts()
{
var products = _repo.GetAllProducts();
return Ok(products);
}
// Non-OData enabled endpoint
[HttpGet]
public IActionResult GetAllProducts()
{
var products = _repo.GetAllProducts().ToList();
return Ok(products);
}
添加 [NonAction] 属性解决了该问题。有更好的办法吗?
[EnableQuery]
[NonAction]
[HttpGet]
public IActionResult GetAllProducts()
{
var products = _repo.GetAllProducts();
return Ok(products);
}