当 SetPath 中存在括号时接收"xxxx is not a valid GraphQL type name. (Parameter 'value')" HotChocolate 12 中的错



这是必要的,因为我需要显示是哪个数组元素导致了这个问题。

这在HotChocolate 10之前工作得很好,但升级到12后,这是打破。我正在运行下面的行,它在它下面出现了错误:

IErrorBuilder errorBuilder = new ErrorBuilder()
.SetPath(new List<string>() { "Users[0]"})
"extensions": {
"message": "`Users[0]` is not a valid GraphQL type name. (Parameter 'value')",
"stackTrace": "   at HotChocolate.NameString..ctor(String value)
at HotChocolate.NameString.ConvertFromString(String s)
at HotChocolate.Path.FromList(IReadOnlyList`1 path)
at HotChocolate.ErrorBuilder.SetPath(IReadOnlyList`1 path)
at AppAPI.Common.AppServicesExceptionHandler.ConstructQueryError(String type, String path, String idCode, String description, Dictionary`2 parameters) in \Project.AppAPI HOT CHOCOLATE 12\AppAPI WebAPI\Common\Exceptions\AppServicesExceptionHandler.cs:line 268
at AppAPI.Common.AppServicesExceptionHandler.ProcessException(Exception e, IConfiguration configuration) in \Project.AppAPI HOT CHOCOLATE 12\AppAPI WebAPI\Common\Exceptions\AppServicesExceptionHandler.cs:line 97
at AppAPI.Queries.TestByPeriodQuery.GetTestByPeriod(Int32 accountId, DateTime startUtcDate, DateTime endUtcDate, String aggregatePeriodIdCode, Int32[] Users, Int32[] monitorGroupIds, String[] groupByIdCodes, IMediator mediator, IMapper mapper, IHttpContextAccessor httpContextAccessor, IConfiguration configuration) in \Project.AppAPI HOT CHOCOLATE 12\AppAPI WebAPI\Queries\TestByPeriodQuery.cs:line 43
at HotChocolate.Resolvers.Expressions.ExpressionHelper.AwaitTaskHelper[T](Task`1 task)
at HotChocolate.Types.Helpers.FieldMiddlewareCompiler.<>c__DisplayClass9_0.<<CreateResolverMiddleware>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at HotChocolate.AspNetCore.Authorization.AuthorizeMiddleware.InvokeAsync(IDirectiveContext context)
at HotChocolate.Utilities.MiddlewareCompiler`1.ExpressionHelper.AwaitTaskHelper(Task task)
at HotChocolate.Execution.Processing.Tasks.ResolverTask.ExecuteResolverPipelineAsync(CancellationToken cancellationToken)
at HotChocolate.Execution.Processing.Tasks.ResolverTask.TryExecuteAsync(CancellationToken cancellationToken)"
}

错误完全正确。ErrorBuilder需要一个Path对象或一个由路径元素组成的List<object>对象。

ErrorBuilder.New()
.SetMessage("foo")
.SetPath(new List<object> { "Users", 0 })
.Build()

可以使用path对象:

ErrorBuilder.New()
.SetMessage("foo")
.SetPath(Path.New("Users").Append(0))
.Build()

相关内容

最新更新