Asp.net mvc 设置线程CurrentCulture/CurentUICulture时是否会影响ASP.NET中的多个用户?
当我们设置CurrentCulture和/或CurrentUICulture时,我们在当前线程上执行以下操作:Asp.net mvc 设置线程CurrentCulture/CurentUICulture时是否会影响ASP.NET中的多个用户?,asp.net-mvc,localization,globalization,Asp.net Mvc,Localization,Globalization,当我们设置CurrentCulture和/或CurrentUICulture时,我们在当前线程上执行以下操作: Thread.CurrentThread.CurrentCulture=新的CultureInfo(“en GB”) Thread.CurrentThread.CurrentUICulture=新的文化信息(“en GB”); 这是否意味着我们可能会影响web应用程序的多个用户的区域性设置,因为他们的请求可能会重用池中的线程 我正在开发一个ASP.NET MVC应用程序,其中每个用
Thread.CurrentThread.CurrentCulture=新的CultureInfo(“en GB”)
Thread.CurrentThread.CurrentUICulture=新的文化信息(“en GB”);
这是否意味着我们可能会影响web应用程序的多个用户的区域性设置,因为他们的请求可能会重用池中的线程
我正在开发一个ASP.NET MVC应用程序,其中每个用户都可以在其帐户数据中指定自己的区域性设置。用户登录时,将从数据库中检索区域性设置,并且必须将其设置为当前区域性
我担心的是,在当前线程上设置当前区域性可能会影响其他用户请求重用此线程。我更关心的是读到这篇文章:
ASP.NET不仅使用线程池,而且可以在请求处理期间切换线程。
在标准ASP.NET中,我使用了页面字段UICulture和Culture。然后,当请求的不同部分在线程上执行时,线程上下文会发生变化
我不熟悉MVC是如何管理它的,但我认为它应该应用于视图中,并且鉴于视图是从页面继承的viewpages,它们将具有UICulture和符合ASP.NET标准的区域性
说这些,不要把这当作福音,正如我所说的,我在ASP MVC方面做得不多…几年前,洛基·洛基·洛特卡(Rocky Lhotka)——并报道斯科特·古思里(Scott Guthrie)告诉他:
ASP.NET确保了这一点,即使
切换你的线程,这个
当代校长与文化
来自原始线程的属性
结转到新线程。这
是自动的,你不需要
担心失去这些价值。唷
但是,线程本地存储不会结转
这篇文章包含了更多有趣的内容(他概述了ASP.NET将切换线程的情况——至少在2006年),这篇文章绝对值得一读。不幸的是,Rocky没有提供到权威来源的链接。Reflector在这里也没有多大帮助,因为所有相关的方法都以本机调用终止
话虽如此,这是有道理的:API强烈暗示当前的文化是通过上下文切换进行的,就像当前的主体一样,我从未见过ASP.NET与预期的行为相矛盾。感谢您链接到这篇博文。这真的是一个有趣的问题,并且消除了我的第二部分担忧——线程切换只在一个请求中发生,只有在必须执行异步操作时才会发生,所以至少这不是随机的,随着文化的发展,这应该不是一个问题。剩下的是当一个新的请求到达时从池中恢复线程,但是如果我们考虑在OnActudio执行中为每个请求设置了文化,那么这也不是问题。