我剛剛安裝了.Net 4.5,並注意到當我試圖從CallContext中檢索一個項目時,仍然在.Net 4下運行的現有Web應用程序失敗,在安裝完成之前以及已經完成了去年。在做一個HTTP Post到ashx時打破.net 4.5 Callcontext的改變?
在應用程序的AuthenticateRequest事件中,我們使用用戶的身份加載有關用戶的更多安全信息。然後將其添加到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中的值是在生命週期後分檢索。 e.g CallContext.GetData(ContextIdentifier)
然而,請求從HTTP「POST」請求中的ashx的時候,該值現在爲空,但在「GET」請求中的值是正確的。
我無法找到記錄的原因,爲什麼這會突然發生變化,或者這是否是現在的設計以及爲什麼它會影響現有的.Net 4應用程序?
我明顯的解決方法是也將數據放在HTTPContext上,但沒有理解爲什麼我不確定使用CallContext會在其他地方引發問題的原因!
任何幫助/理解會感激地收到
更新:這似乎是mscorlib.dll已被更新,但仍不能解釋爲什麼 – SiGent 2012-08-17 13:07:53
它會出現這種情況只發生在IE中,我得到一個不同的堆棧跟蹤。 當它工作時,我得到和額外的PiplineRuntime.ProcessRequestNotification – SiGent 2012-08-17 14:43:03