2011-11-16 49 views

回答

2

是 - 如果後臺線程與ASP.NET站點在同一AppDomain中運行。 HttpContext.Current.Session會讓你訪問它。當然,忽略如何最好地處理Web應用程序中的多線程的整個話題,如何最好地處理注入依賴到您的後端代碼(無論是控制器還是其他一些技術)來進行可測試性,這會讓您在那裏最快,最骯髒。

0

現在我正在寫這個答案,會話在其他正在處理當前請求的線程中不可用。 如果沒有任何請求,當前屬性HttpContext爲空。 但是,如果在該後臺線程中,您在接收到請求後正在使用會話,則該請求處於活動狀態並且尚未完成時可用。 可能有更好的解決方案爲您的要求。 任何方式,如果你必須使用後臺線程,訪問會話不是唯一的問題,你遇到。您應該考慮可能發生的故障情況,並注意您的應用程序未進入不適當的狀態。例如,IIS可能會回收AppDomain(儘管這個幾乎可以由HostingEnvironment.RegisterObject處理)