我需要更新任务中ApplicationDbContext的表;然而,我没有完成。以下是我收到的错误消息:
例如,Message=“无法访问已处理的对象。这是一个常见的原因
处理从依存关系解析的上下文时出错
在应用程序的其他位置。如果您打电话,可能会发生这种情况
处置
我知道这与我不太熟悉的线程有关。
代码如下:
[HttpPost]
public ActionResult WebHook([FromBody] BotRequest data)
{
Task.Factory.StartNew(() =>
{
//Read value from Table
ContextWatsonFB contextWatsonFB = _context.ContextWatsonFB.Where(m => m.RecipientId == recipientid).FirstOrDefault();
if (contextWatsonFB == null)
{
contextWatsonFB = new ContextWatsonFB()
{
RecipientId = recipientid
};
_context.Add(contextWatsonFB);
_context.SaveChanges();
}
else
{
if (!string.IsNullOrEmpty(contextWatsonFB.Context))
{
model = JsonConvert.DeserializeObject<Context>(contextWatsonFB.Context);
}
}
///DO SOME STUFF ////////////////
///Here I need to update my table using some values processed above in "some stuff"
ContextWatsonFB contextWatsonFB = _context.ContextWatsonFB.Where(m => m.RecipientId == recipientid).FirstOrDefault();
contextWatsonFB.Context = JsonConvert.SerializeObject(context);
_context.Update(contextWatsonFB);
_context.SaveChanges();
}
}
正如你所知道的,这是Facebook的一个webhook连接,需要在一个任务中处理这个过程。在“some stuff”中,基本上我正在使用IBM Watson对话服务,该服务会保留一个对话“上下文”,我无法将其来回发送到Facebook,这就是为什么我会将此类数据保留在一个表中,以保留来自Facebook messenger的多个请求之间的差异。