Asp.net-Mvc

當我們設置 Thread CurrentCulture/CurentUICulture 時,我們是否會影響 ASP.NET 中的多個使用者?

  • May 24, 2010

當我們設置 CurrentCulture 和/或 CurrentUICulture 時,我們在目前執行緒上執行此操作,如下所示:

`Thread.CurrentThread.CurrentCulture = new CultureInfo(“en-GB”);

Thread.CurrentThread.CurrentUICulture = new CultureInfo(“en-GB”);`

這是否意味著我們可能會影響 Web 應用程序的多個使用者的文化設置,因為他們的請求可能會重用池中的執行緒?

我正在開發一個 ASP.NET MVC 應用程序,其中每個使用者都可以在他/她的帳戶數據中指定自己的文化設置。當使用者登錄時,從數據庫中檢索文化設置,並且必須將其設置為目前文化。

我擔心在目前執行緒上設置目前文化可能會影響另一個使用者請求重用該執行緒。我更關心閱讀這個:

ASP.NET not only uses a thread pool, but may switch threads during request processing.

幾年前,洛基·洛特卡( Rocky Lhotka )在部落格上寫過這個問題——並報導說斯科特·格思裡(Scott Guthrie)告訴他:

ASP.NET 確保即使他們切換了您的執行緒,原始執行緒的 CurrentPrincipal 和區域性屬性也會繼續傳遞到新執行緒。這是自動的,您無需擔心失去這些值。哇!

但是,執行緒本地儲存不會繼續前進。

這篇文章包含更多有趣的材料(他概述了 ASP.NET切換執行緒的情況 - 至少截至 2006 年),絕對值得一讀。不幸的是,Rocky 沒有提供權威來源的連結。反射器在這裡也沒有太大幫助,因為所有相關方法都以本地呼叫終止。

話雖如此,這是有道理的:API 強烈暗示目前文化是跨上下文切換的,就像目前主體一樣,我從未見過 ASP.NET 與預期行為相矛盾。

引用自:https://stackoverflow.com/questions/2863593