我的WebAPI控制器中有以下内容:
Task.Run(() => _userService.LoginWork(model.Username));
LoginWork的位置:
// var user = db.Users where...
user.LoggedIn = DateTime.UtcNow;
db.SaveChanges()
一个非常简单的操作,我试图在不阻止WebAPI工作的情况下执行。当我不在任务中运行它时,它工作正常。但是当我在Task中运行时,db永远不会更新。这是怎么回事?
答案 0 :(得分:1)
我会在没有看到整个代码的情况下尝试猜测这个问题。
您在WebApi请求上下文之外发布了一个新任务,并且您有一个由IoC容器注入的EntityFramework上下文(或依赖于上下文的存储库),并且该EntityFramework上下文被配置为每个请求的实例。
这会导致该方法抛出ObjectDisposedException,但由于它位于异步任务中,因此您实际上看不到异常。