Доступ к свойствам httpcontext из System.Timers.Timer

У меня проблема при доступе к значению httpcontext.current в методе application_start.
Есть много дискуссий на эту тему.
Но я хочу поделиться своей бизнес-логикой и мне нужен совет, как справляться с проблемой.

Давайте посмотрим на эту бизнес-логику вместе шаг за шагом

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- Если я запускаю метод init() в событии application_start в global.asax, я получаю эту ошибку "ссылка на объект...", где начинается строка "..HttpContext.Current.Session".

Так
Если я не хочу получать доступ к свойствам httpcontext.current, у меня нет проблем в этой ситуации.
Но если мне нужно получить доступ к каким-либо свойствам httpcontext.current при событии Timer_Elapsed, у меня есть проблема по этому поводу.
Поэтому мне нужен ваш совет или альтернативный способ сделать мой алгоритм.
Спасибо

0 ответов

Другие вопросы по тегам