Несколько контроллеров / действий в Odata с контролем версий - PullRequest
0 голосов
/ 28 сентября 2019

Наш продукт создал CustomODataVersionControllerSelector для использования префикса (например, v2 /) в URL для разных версий контроллера.Так как версия в URL-адресе является просто префиксом, OData использует только одатар для поиска контроллера и действия и возвращает первый соответствующий контроллер / действие из attributeMapping, поэтому один и тот же одатар может быть сопоставлен с несколькими контроллерами и действиями.Иногда наши клиенты обращаются к конечным точкам v2, даже если они пытаются получить контроллер v1.Что мы должны сделать, чтобы заставить OData найти правильный контроллер и действие?

Мы настроили функцию GetControllerName, чтобы она всегда возвращала базовую версию имени контроллера, а затем добавляла версию, читая URL-адрес, чтобы создать реальное имя контроллера.Этот обходной путь помогает найти правильную версию контроллера, но отображение действий по-прежнему остается проблемой.

public class TableDataController : ODataController
{
…
[ODataRoute(datasets(dataset_name)/tables(table_name)/items)]
public async Task<IHttpActionResult> GetItems
{
            …
}
…
}

public class TableDataV2Controller : ODataController
{
…
[ODataRoute(v2/datasets(dataset_name)/tables(table_name)/items)]
public async Task<IHttpActionResult> GetItemsV2
{
            …
}
…
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...