从System.Timers.Timer访问httpcontext属性

时间:2016-11-22 20:49:27

标签: asp.net asp.net-mvc global-asax httpcontext

在application_start方法中访问httpcontext.current值时出现问题。
关于这个主题有很多讨论。
但我想分享我的业务逻辑,我需要一些建议如何处理问题。

让我们一步一步地看一下这个业务逻辑

1 - 我想设计具有“静态全局列表”属性的“自定义对象”,任何用户都可以在发生操作时将“LogObj”对象添加到此列表中。

public class MyLog
{
public static void List<LogObj> LogObjList {get;set;}
static MyLog()
{
LogObjList = new List<LogObj>();
}
}

2-如果我有一个“System.Timers.Timer”对象,它每隔X毫秒检查一次“静态全局列表”并执行一些在代码中定义的动作

public static init(){
System.Timers.Timer t = new System.Timers.Timer();
t.Elapsed += T_Elapsed;
t.Interval = 3000;
t.Start();
}

private void T_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//perform some code. 
var s = HttpContext.Current.Session["test"];
var logObj = MyLog.LogObjList[0] + s;
//save as text file ...
}

3-如果我在global.asax的application_start事件中启动init()方法,我得到这个错误“object reference ...”,其中“..HttpContext.Current.Session”行开始了。

所以
如果我不想访问任何httpcontext.current的属性,我在这种情况下没有问题。
但是如果我需要在Timer_Elapsed事件中访问httpcontext.current的任何属性,我就会遇到问题。
所以我需要你的建议或替代方法来制作我的算法。
谢谢

0 个答案:

没有答案