gpt4 book ai didi

c# - 在 ExceptionFilter 中访问 dbcontext

转载 作者:行者123 更新时间:2023-11-30 16:40:36 25 4
gpt4 key购买 nike

我已经编写了一个 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 核心应用程序

最佳答案

您可以从 ExceptionContext 访问 IServiceProvider

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

...

await db.SaveChangesAsync();
}

关于c# - 在 ExceptionFilter 中访问 dbcontext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50948756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com