我编写了一个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 Core应用程序。
GetService<T>()
和GetRequiredService<T>()
位于Microsoft.Extensions.DependencyInjection
命名空间中。 - Brad