我正在使用 StructureMap 在 ASP.NET 中为每个请求创建 DbEntities 实例。
ObjectFactory.Initialize(x =>
{
x.For<DbEntities>().HttpContextScoped().Use(CreateNewDbEntities);
}
我有一个每 5 秒运行一次的后台任务,它正在尝试使用 DbEntities。
timer = new Timer(RunTasks, null, 1000 * 10/*time to wait until the first run*/, 1000 * 5/*time to wait between calls*/);
现在在方法 RunTasks 中,当我尝试调用 GetDbEntities 时,我得到空引用异常
private static void RunTasks(object sender)
{
var muninService = GetDbEntities(); // Null reference excpetion
}
public static DbEntities GetDbEntities()
{
return ObjectFactory.GetInstance<DbEntities>();
}
我猜这是因为在后台线程中我无法访问 httpcontextscope。现在我是结构图的新手,我不知道要开始和解决这个问题。有任何想法吗 ?
我使用的其他方法:
private static DbEntities CreateNewDbEntities()
{
return new DbEntities();
}