使用.NET(Strawberryshake&HotChocolate)实现Cursor分页遇HC0051错误,怎改maxAllowedItems?
解决HotChocolate中maxAllowedItems限制的方法
你遇到的HC0051错误是HotChocolate的分页保护机制触发的,当前请求的800条数据超出了默认的50条限制,以下是几种修改maxAllowedItems的方式:
1. 单独配置目标查询字段
如果仅需调整pfConceptSupplierData字段的限制,可通过特性或字段配置实现:
- 在Resolver方法上添加特性:
[Paging(MaxPageSize = 800)] // 设置你需要的最大每页项数 public async Task<Connection<ConceptSupplierData>> PfConceptSupplierDataAsync(...) { // 你的Resolver业务逻辑 }
- 代码优先的字段配置:
public class QueryType : ObjectType<Query> { protected override void Configure(IObjectTypeDescriptor<Query> descriptor) { descriptor.Field(f => f.PfConceptSupplierDataAsync(...)) .Type<ConnectionType<ConceptSupplierDataType>>() .UsePaging(maxPageSize: 800); // 指定该字段的最大分页大小 } }
2. 全局设置默认值
若要统一修改所有分页字段的默认限制,可在服务配置中全局配置:
builder.Services.AddGraphQLServer() .AddQueryType<Query>() // 其他GraphQL服务配置... .SetPagingOptions(new PagingOptions { MaxPageSize = 800 // 全局默认的最大每页项数 });
注:全局配置会被单个字段的特性或字段级配置覆盖。
3. 动态调整限制(按需使用)
如果需要根据请求上下文(如用户权限)动态调整限制,可在Resolver中通过IPagingContext修改:
public async Task<Connection<ConceptSupplierData>> PfConceptSupplierDataAsync(IPagingContext pagingContext, ...) { // 示例:针对特定用户放宽限制 if (/* 权限判断逻辑 */) { pagingContext.MaxPageSize = 800; } // 你的Resolver业务逻辑 }
修改时建议根据实际业务场景设置合理的最大值,避免单次请求获取过多数据影响服务性能。
内容的提问来源于stack exchange,提问作者Kishan Jamariya
相关产品推荐
相关产品推荐

