我正在使用StructureMap在ASP.NET中爲每個請求創建DbEntities實例。StructureMap中的HttpContextScoped,ASP.NET在後臺線程中拋出空引用異常
ObjectFactory.Initialize(x =>
{
x.For<DbEntities>().HttpContextScoped().Use(CreateNewDbEntities);
}
我有一個bacgkround任務,每5秒嘗試使用DbEntities。
timer = new Timer(RunTasks, null, 1000 * 10/*time to wait until the first run*/, 1000 * 5/*time to wait between calls*/);
現在,在方法RunTasks我得到空引用excption當我嘗試調用GetDbEntities
private static void RunTasks(object sender)
{
var muninService = GetDbEntities(); // Null reference excpetion
}
public static DbEntities GetDbEntities()
{
return ObjectFactory.GetInstance<DbEntities>();
}
我猜測這是在後臺線程我沒有訪問httpcontextscope becauase。現在我對結構圖很陌生,我不知道要開始並解決這個問題。有任何想法嗎 ?
,我用其他方法:
private static DbEntities CreateNewDbEntities()
{
return new DbEntities();
}
有一個名爲'HybridHttpOrThreadLocalScoped'的生命週期,如果沒有'HttpContext',它將回退到每個線程緩存。 – PHeiberg
在asp.net應用程序中運行後臺線程通常不是一個好計劃。 –
@Damien_The_Unbeliever我很清楚在asp.net應用程序中運行後臺線程的缺點。謝謝 – Dorin