hotchocolate 11:如何用我自己的中间件替换 ExceptionMiddleware?

问题描述

是否可以用我自己的中间件类替换“官方”ExceptionMiddleware HotChocolate 类?

我计划通过包含 AgregationException .Net 异常来“完成”捕获,并通过循环 AgregationException.InnerExceptions 属性创建 IError[] 数组(参见下面的原始 ExceptionMiddleware)。

我想用我自己的实现替换它。

有可能吗?我该怎么做?

谢谢。

亲切的问候

   internal sealed class ExceptionMiddleware
    {
        private readonly RequestDelegate _next;
        private readonly IErrorHandler _errorHandler;

        public ExceptionMiddleware(RequestDelegate next,IErrorHandler errorHandler)
        {
            _next = next ?? throw new ArgumentNullException(nameof(next));
            _errorHandler = errorHandler ?? throw new ArgumentNullException(nameof(errorHandler));
        }

        public async ValueTask InvokeAsync(IRequestContext context)
        {
            try
            {
                await _next(context).ConfigureAwait(false);
            }
            catch (GraphQLException ex)
            {
                context.Exception = ex;
                context.Result = QueryResultBuilder.CreateError(_errorHandler.Handle(ex.Errors));
            }
            catch (Exception ex)
            {
                context.Exception = ex;
                IError error = _errorHandler.CreateUnexpectedError(ex).Build();
                context.Result = QueryResultBuilder.CreateError(_errorHandler.Handle(error));
            }
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...