2011-06-29 71 views
2

HttpContext.Current在回調函數或在不同的thead上時爲null。我如何解決這個問題。 我見過幾個例子,他們說那裏HttpContext爲NULL

LocalDataStoreSlot slot = Thread.GetNamedDataSlot("SlotName"); 
return (HttpContext)Thread.GetData(slot); 

它不工作..和誠實它沒有太大的意義。

有什麼建議嗎?

+0

它不工作(計算結果爲'null'),因爲'HttpContext.Current'是*線程本地* – 2011-06-29 04:39:33

回答

3

你需要的HttpContext對象傳遞到什麼都開始與螺紋:

例如

var task = Task.Factory.StartNew(
     state => 
     { 
      var context = (HttpContext)state; 
      //do your stuff here 
     }, 
    HttpContext.Current); 

馬丁

+0

也可以使用封閉。 (我喜歡在封大多數情況下,如果沒有別的。一致性) – 2011-06-29 04:40:26

+0

我有HttpContext的公共靜態WebContext當前 { 得到 { 如果(context.Items [MyContextKey] == NULL){ 鎖 包裝(掛鎖) { instance = new WebContext(); context.Items [MyContextKey] = instance; } } return context.Items [MyContextKey] as WebContext; } } – sekhar

+0

這個WebContext被用在代碼中的任何地方。並如預期,這是不工作時使用線程或CacheItemRemovedCallBack ... – sekhar