Прерывистая ошибка: «Свойство AssignmentListId нельзя использовать в параметре запроса $ filter». - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть новый сервис OData, использующий Microsoft.AspNet.OData 6.1.0.Мой контроллер OData содержит метод

[EnableQuery]
public IHttpActionResult Get(ODataQueryOptions<AssignmentGroupDto> queryOptions)
{
    // validate the query.
    try
    {
        queryOptions.Validate(_validationSettings);
    }
    catch (ODataException ex)
    {
        return BadRequest(ex.Message);
    }

    var allAssignmentGroups = ApiService.GetAssignmentGroups();

    return Ok(allAssignmentGroups);
}

Мой DTO имеет атрибут фильтра

[Count]
[Filter(new[] {"AssignmentListId","TourCode" })]
[OrderBy]
[Select]
[Expand("Participants")]
[Page(MaxTop = 1000)]
public partial class AssignmentGroupDto { ... }

Когда я пытаюсь вызвать этот метод с использованием OData URL

https://localhost/api/V2AssignmentGroups?$filter=(AssignmentListId eq 7182) and (TourCode eq 'TSWKYKP')&$count=true

обычно это работает, но иногда я получаю ошибку

The property 'AssignmentListId' cannot be used in the $filter query option.

Как я могу отладить это дальше?Периодический характер проблемы заставляет меня думать, что это может быть вызвано некоторой формой кэширования метаданных (атрибут Filter не читается до того, как проверяется разрешение фильтра, поэтому в разрешении отказано).Есть ли какие-нибудь кеши, которые я могу очистить, чтобы проверить эту теорию?Могу ли я регистрировать дополнительную информацию, когда выдается эта ошибка?

Я проверил, что вызываемые URL-адреса идентичны.Приведенный выше URL был скопирован из журналов AppInsights для неудачного запроса.Это из успешного запроса:

https://localhost/api/V2AssignmentGroups?$filter=(AssignmentListId eq 7182) and (TourCode eq 'TSWKYKP')&$count=true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...