获取异常"在上一个操作完成之前,在此上下文中启动了第二个操作。任何实例成员都不保证是线程安全的。" 以下是代码。
public Task Invoke(HttpContext context)
{
try
{
var userId =context.Session.GetString("UserId");
if (userId != null)
{
var user =_context.Users.Where(u => u.Id == userId).FirstOrDefault();
user.TimeStamp = DateTime.Now;
_context.SaveChanges();
}
else
{ }
}
catch(Exception ex)
{
_logger.LogError(ex.Message);
}
// Call the next delegate/middleware in the pipeline
return this._next(context);
}
答案 0 :(得分:0)
我无法通过您的代码告诉我,但我猜测:
正如您所发现的那样,这可能不会起作用。
而是通过Invoke方法注入db上下文。
public Task Invoke(HttpContext context, YourDbContext dbContext)
{
try
{
var userId = context.Session.GetString("UserId");
if (userId != null)
{
var user = dbContext.Users.Where(u => u.Id == userId).FirstOrDefault();
...
}
}
catch(Exception ex){...}
}
这可以确保您拥有db上下文的作用域实例,该实例应该是线程安全的。