从一个页面我调用这样的服务:
_ = _importUserService.AddManyUserAsync(ValidatedUsers);
我希望 Page() 返回并让用户/用户界面继续前进,同时该服务在后台使用 UserManager 添加许多用户。问题是一旦 Page() 返回并且请求完成,IdentityDbContext 就会关闭并且 UserManager 不再起作用。请求完成后如何保持 UserManager 工作?
该服务使用标准依赖注入:
private readonly UserManager<ApplicationUser> _userManager;
public ImportUserService(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
如果我使用 await 而不是 discard 并强制服务在页面加载之前完成,它工作正常;但是,如果用户需要等待 2 分钟才能在页面加载之前导入数千个用户,这将是糟糕的 UX。我的问题是没有创建存储过程并复制 UserManager 正在做的事情,有没有办法在其中使用 UserManager不依赖于请求生命周期的服务?
我的想法是创建一个新的 UserManager 实例,而不是依赖依赖注入中的实例,但到目前为止我还无法让它工作。不确定语法是什么,也找不到在 .net core 3.1 中实际工作的示例
如何在请求后使 IdentityDbContext 保持活动状态,以便服务可以使用 UserManager 完成其任务?(.Net Core 3.1)