2016-12-20 1 views
2

私は、タスクファクトリの内部で呼び出されるメソッドの内部でHttpContext.Currentをnullにしていました。だから、私はcurrentContext変数にHttpContext.Currentを割り当てました。次に、同じ変数を使用してHttpContext.Currentを割り当てました。HttpContext.Currentをタスクファクトリの内部に割り当てるのは正しいですか?

var currentContext = HttpContext.Current; 
    Task shipmentCreationCompleted = Task.Factory.StartNew(() => 
    { 
     HttpContext.Current = currentContext; 
     MethodToPerformSomeAction(); 
    }); 

現在問題なく動作しています。私のコードに技術的に問題があるかどうか教えてください。または、この問題を処理する別の方法がありますか?

+2

HttpContextをパラメータとしてタスクファクトリに渡すと、呼び出すメソッドと同じHttpContextが常に使用されます – alikuli

+0

ありがとうalikuli。もし私がそれを使用すれば、それはどのような違いになりますか? –

+1

呼び出しタスクが使用している要求とまったく同じ参照を使用します。非互換性はありません。基本的にこれはパラメータ注入です。 あなたのメソッドが機能するので、そのメソッドも良いかもしれませんが、HttpContextの参照を渡して使用する方が安全だと思います。このように私は常に私が扱っている動物を知っている。 – alikuli

答えて

1

は、最後に私はそれは素晴らしい作品、コメントに基づいて、このよう

Task shipmentCreationCompleted = Task.Factory.StartNew(currentContext => 
    { 
     HttpContext.Current = (HttpContext)currentContext; 
     MethodToPerformSomeAction(); 
    }, HttpContext.Current); 

を使用しました!

関連する問題