Проблема с маршрутизацией OData / путей в. Net Core 3.1 - PullRequest
0 голосов
/ 05 марта 2020

Я начал работать с OData и не могу понять, как работают маршрутизация и пути.

Имею контроллер:

[Route("odata/[controller]")]
public class TestController : ODataController
{
    public TestController(IRepository<ETest> testContext)
    {
        _testContext = testContext;
    }

    [HttpGet]
    [EnableQuery()]
    public IQueryable Get()
    {
        return _testContext.GetData();
    }

    [HttpGet]
    [EnableQuery()]
    public async Task<ETtest> Get([FromQuery] DateTime key)
    {
        return await _testContext.Get(key);
    }

    private IRepository<Etest> _testContext { get; }
}

У меня проблемы при попытке доступа к контроллеру вызовов с путями :

http://localhost:60286/odata/test?&key=2019-12-13T02:50:06.210553
http://localhost:60286/odata/test?$filter=mtts gt 2019-12-13T00:00:00Z&key=2019-12-13T02:50:06.210553

У меня go ошибка:

  Microsoft.AspNetCore.Mvc.Infrastructure.AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied..

Как решить проблему с маршрутизацией?

Можно ли переименовать метод Получить на другое имя ?

Я заглянул в ресурсы:

https://devblogs.microsoft.com/odata/experimenting-with-odata-in-asp-net-core-3-1/

https://docs.microsoft.com/en-us/odata/webapi/built-in-routing-conventions

Спасибо за помощь.

1 Ответ

1 голос
/ 12 марта 2020

Измените второй HttpGet на

 [HttpGet("{key}")]
...