2

.Net 4.5 をインストールしたところ、.Net 4 でまだ実行されている既存の Web アプリケーションが、CallContext から項目を取得しようとすると失敗することに気付きました。去年のために。

アプリケーションの AuthenticateRequest イベントでは、ユーザーの ID を使用して、ユーザーに関するより多くのセキュリティ情報を読み込みます。これは、後で使用するために CallContext に追加されます。

例えば

 protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
        { 
             // set someValue 
            CallContext.SetData(ContextIdentifier, someValue);
        }
    }

callcontext の値は、ライフサイクルの後の時点で取得されます。例: CallContext.GetData(ContextIdentifier)

ただし、http の「POST」リクエストから .ashx をリクエストすると、値は null になりましたが、「GET」リクエストでは正しい値になります。

これが突然変更された理由、またはこれが設計によるものであり、既存の .Net 4 アプリケーションに影響を与える理由について、文書化された理由を見つけることができませんか?

私の明白な修正は、データを HTTPContext にも置くことですが、CallContext を使用すると他の場所で問題が発生するかどうかわからない理由を理解していません!

どんな助け/理解も感謝して受け取ります

4

1 に答える 1

1

http://forum.springframework.net/showthread.php?572-CallContext-vs-ThreadStatic-vs-HttpContext

呼び出しコンテキストを破棄するのは http パイプラインだったようですが、改善されたために今しか見られないに違いありません

于 2012-08-17T19:37:18.440 に答える