间歇性错误:“无法在$ filter查询选项中使用属性'AssignmentListId'。”

时间:2018-11-30 12:52:21

标签: odata

我有一个使用Microsoft.AspNet.OData 6.1.0的新OData服务。我的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

0 个答案:

没有答案