데이터베이스 대기열에서 얻은 코드를 처리하기 위해 스레드가 응답하는 ASP.NET 웹 사이트가 있습니다.ASP.NET의 세션 및 스레드
Session에 액세스하거나 매개 변수로 전달할 수 있습니까? 그래서 캔트
데이터베이스 대기열에서 얻은 코드를 처리하기 위해 스레드가 응답하는 ASP.NET 웹 사이트가 있습니다.ASP.NET의 세션 및 스레드
Session에 액세스하거나 매개 변수로 전달할 수 있습니까? 그래서 캔트
하면
내 현재 코드는 다음과 같습니다 당신의 일은 asp.net 쓰레드 외부에서 이루어지며, 그 세션을 사용할 수 있다고 가정하는 것이 안전하지 않을 수도 있습니다. 결정적 방법 만이 데이터를 스레드에 명시 적으로 전달하는 것입니다. 당신은 당신이 스레드 내에서 세션에 액세스 할 수 없습니다 named data slot
편집 그렇게 스레드에서 실행할 때
MediaJob nextJob = GetNextJobFromDB();
CreateMedia media = new CreateMedia();
Thread t = new Thread(new parameterizedThreadStart(media.DOSTUFF);
t.Start(nextJob);
HttpContext.Current.Session가 null :
HttpContext ctx = HttpContext.Current;
Thread t = new Thread(new ThreadStart(() =>
{
HttpContext.Current = ctx;
worker.DoWork();
}));
t.Start();
// [... do other job ...]
t.Join();
에 데이터를 할당하여이 작업을 수행 할 수 있습니다,하지만 당신은 사용하여 데이터를 공유 할 수 : HttpRuntime.Cache
마음에 생각해야 할 몇 가지가 있습니다 : 세션과 달리 캐시는 만료됩니다. 또한 캐시는 모든 웹 사용자가 공유합니다.
작성자는 새 스레드에서 'HttpContext.Current.Session'을 사용할 수 없다고 대답했습니다. –
답안의 코드는이 단어의 단어와 일치합니다. http://stackoverflow.com/questions/8925227/access-httpcontext-current-from-threads – SpartaSixZero
'Session'은 스레드 내에서 여전히이 접근법을 사용하여 null입니다. – mmcrae