【发布时间】:2022-11-15 04:27:07
【问题描述】:
所以我试图用HotChocolate 12.5.2 记录错误,我想知道拦截错误的最佳位置。阅读hotchocolate Documentation我发现接口IErrorFilter有一个OnError方法,每次出错时都会调用,但它的实现是单例的。是否有服务范围的地方我可以拦截此错误,或者有没有办法将我的 Scoped 服务注入 a 以记录错误?
我可以拦截并个性化我的错误,但我无法注入我的服务。我只想知道这是否是拦截错误的最佳位置,以及是否是在此处记录错误的最佳做法。
这就是我正在尝试的:
public class CustomErrorFilter : IErrorFilter
{
private readonly IBaseService _service;
private readonly IHttpContextAccessor _accessor;
public CustomErrorFilter(IBaseService service, IHttpContextAccessor accessor)
{
_service = service;
_accessor = accessor;
}
public IError OnError(IError error)
{
if (error.Exception is not null)
return error.WithMessage(error.Exception.Message);
_service.Add<Log, LogViewModel>(new LogViewModel()
{
Message= error.Message,
}, _accessor.HttpContext.User);
return error;
}
}
IBaseService 是我的通用类,可以访问我的应用程序 DbContext,并且是 Scoped 服务
【问题讨论】:
标签: c# hotchocolate