2011-06-29 29 views
2

HttpContext.Currentはコールバック時または別のtheadでnullです。どのように私はこれを回避します。 私は、彼らはそれが仕事をdoesntの...正直、それはあまり意味がdidntはHttpContextがNULLです

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

を言ういくつかの例を見てきました。

提案がありますか?

あなたがして、あなたがスレッドを開始、これまでどのようにHttpContextオブジェクトを渡す必要があると思い
+0

'HttpContext.Current'は*スレッドローカルであるため、(null'なので'に評価される)* –

答えて

3

例えばそれは動作しません

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

マーティン

+0

もクロージャを使用することができます。私はのHttpContextのpublic static WebContext現在 { 取得 { 場合(context.Items [MyContextKey] == null)の { ロックのラッパーを持って –

+0

(私があれば何も。一貫性のため、ほとんどの場合、クロージャを好みます) (南京錠) { インスタンス=新しいWebContext(); context.Items [MyContextKey] = instance; } } return context.Items [MyContextKey]をWebContextとして返します。 } } – sekhar

+0

このWebContextは、コードのどこでも使用されています。そして、これはスレッドやCacheItemRemovedCallBackを使用しているときにはうまくいきません。 – sekhar

関連する問題