.net Core 2.0 OData - EnableQuery属性不允许操作

时间:2018-02-25 10:27:33

标签: asp.net-core odata

我正在尝试在一个简单的项目中使用Microsoft.AspNetCore.OData,v7.0.0.0-beta1。 我无法过滤,选择和使用顶部或跳过。

覆盖EnableQueryAttribute的ValidateQuery,我可以成功执行这些类型的操作,所以我相信库是错误的。 我找不到报告问题的正确渠道,有人可以帮忙吗?

可以在此处找到要重现的示例代码:https://github.com/norcino/AspNetCoreSamples/tree/master/SampleODataApp

1 个答案:

答案 0 :(得分:2)

问题的解决方案是MVC路由构建器的实际初始化。 与.net框架版本一样,可以指定允许OData查询的操作。在下面的示例中,我将所有内容列入白名单,但您可以通过QueryOptionSetting实例进行更精细的调整。

        app.UseMvc(routeBuilder =>
        {
            routeBuilder
                .Select()
                .Expand()
                .Filter()
                .OrderBy(QueryOptionSetting.Allowed)
                .MaxTop(2000)
                .Count();
            routeBuilder.EnableDependencyInjection();
        });

请注意,属性[HttpGet, EnableQuery(AllowedOrderByProperties = "Id")]将有效地强制执行属性中指定的唯一Id属性,但首先需要从配置中启用all。