C# 在ExceptionFilter中访问dbcontext

C# 在ExceptionFilter中访问dbcontext,c#,asp.net-core,C#,Asp.net Core,我编写了一个ExceptionFilter属性,在这个属性中,我需要访问dbContext类来处理数据库事务。但我在过滤器属性中收到null引用 有什么方法可以获得dbContext的工作参考吗 public class AppExceptionAttribute : ExceptionFilterAttribute { AppIdentityDbContext _context; public AppExceptionAttribute(AppI

我编写了一个
ExceptionFilter
属性,在这个属性中,我需要访问
dbContext
类来处理数据库事务。但我在过滤器属性中收到
null
引用

有什么方法可以获得
dbContext
的工作参考吗

    public class AppExceptionAttribute : ExceptionFilterAttribute
    {
        AppIdentityDbContext _context;
        public AppExceptionAttribute(AppIdentityDbContext context)
        {
            _context = context;
        }

        public AppExceptionAttribute()
        { }

        public override async Task OnExceptionAsync(ExceptionContext context)
        {

            var exception = context.Exception;
            while (exception != null)
            {
    //here _context is null, that is a dbContext class
                _context.Errors.Add(new Entities.Error {
                    Message = exception.Message,
                    StackTrace = exception.StackTrace,
                    Date = DateTime.Now
                });

                exception = exception.InnerException;
            }
            await _context.SaveChangesAsync();
        }
    }

我需要指出的是,这是一个asp.net核心应用程序

您可以从
例外上下文
访问
IServiceProvider

public override async Task OnExceptionAsync(ExceptionContext context)
{
    var db = context.HttpContext.RequestServices.GetService<AppIdentityDbContext>();

    ...

    await db.SaveChangesAsync();
}
public override异步任务OneExceptionAsync(ExceptionContext上下文)
{
var db=context.HttpContext.RequestServices.GetService();
...
等待db.saveChangesSync();
}

非常感谢!虽然在我的例子中GetService方法是这样的:var db=context.HttpContext.RequestServices.GetService(typeof(AppIdentityDbContext));通用扩展方法
GetService()
GetRequiredService()
位于
Microsoft.Extensions.DependencyInjection
命名空间中。