如何在同一控制器中创建 odata 和非 odata 端点

问题描述 投票:0回答:1

目标:在同一控制器内创建两个 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);
  }
asp.net-core odata
1个回答
0
投票

添加 [NonAction] 属性解决了该问题。有更好的办法吗?

[EnableQuery]
[NonAction]
[HttpGet]
public IActionResult GetAllProducts()
{
    var products = _repo.GetAllProducts();
    return Ok(products);
}
© www.soinside.com 2019 - 2024. All rights reserved.