在ASP.NET中全局设置ODataValidationSettings(例如MaxNodeCount

k5hmc34c  于 11个月前  发布在  .NET
关注(0)|答案(1)|浏览(110)

是否有办法在ASP.NET Web API中全局设置ODataValidationSettings的属性?
我想为我所有的控制器更改MaxNodeCount,并在全局OData配置过程中寻找一种方法:

public static void Register(HttpConfiguration config)
{
    var builder = new ODataConventionModelBuilder();

    config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());

    config
        .Select()
        .Expand()
        .Filter()
        .OrderBy()
        .MaxTop(null)
        .Count()
        // Looking for something like this:
        .MaxNodeCount(20)
        // Or like this:
        .SetDefaultODataValidationSettings(new ODataValidationSettings {MaxNodeCount = 20});
}

字符串

nfzehxib

nfzehxib1#

下面是如何用ASP.NET Core OData 8.x实现这一点。
创建一个自定义的ODataQueryValidator类,实现您希望应用的验证设置

public class SalesforceODataQueryValidator : ODataQueryValidator
{
    public override void Validate(ODataQueryOptions options, ODataValidationSettings validationSettings)
    {
        validationSettings.MaxNodeCount = 300; // salesforce screens can exceed the default of 100 nodes per query
        base.Validate(options, validationSettings);
    }
}

字符串
在设置OData时将此类注册为IODataQueryValidator的实现

builder.Services.AddOData(opt => {
    opt.EnableQueryFeatures()
       .AddRouteComponents("odata", edmModel, 
       odataServices => { 
          odataServices.AddSingleton<IODataQueryValidator, SalesforceODataQueryValidator>(); 
       });
});

相关问题