【问题标题】:Not consistently setting thread culture in ASP.net - bad idea?没有始终如一地在 ASP.net 中设置线程文化 - 坏主意?
【发布时间】:2012-12-18 22:15:34
【问题描述】:

我发现了一种特殊情况,我们在页面加载后没有设置线程文化。

我们还有一个非常罕见的情况,即某人的文化无缘无故地转换。

这两件事有关系吗?

我了解,当您使用线程池时,池中的所有内容都不会被重置。线程文化是否是其中之一,因此线程已被归还给池的一个人的文化是否会泄漏到下一个人的线程中?

【问题讨论】:

  • 这可能是个坏主意。如果我去你的网站并随机获得一个日文版本,我可能会假设你的网站只有日文并且永远不会回来。
  • 有点相关的问题,答案中的建议不要指望正在重置的线程:stackoverflow.com/questions/1467194/…

标签: c# asp.net culture


【解决方案1】:

鉴于 michielvoo 评论中 link 中的信息,我认为这两件事很可能是相关的。

您可能希望从 HTTP 请求标头 Accept-Language(在 Application_BeginRequest 方法覆盖的 global.asax 中)手动设置线程文化,并在缺少该标头时使用默认的后备文化(取决于您的网络的目标受众) , 但一般最好使用en)。

但是如果可能,让用户/访问者覆盖此类文化/语言设置是一个非常的好习惯 - 浏览器是邪恶的,有时文化设置可能是不受用户控制(例如,在用户不会说语言的国家度假时的网吧)

【讨论】:

  • 表示该值未设置的情况已经修复,我只是想知道是否有人确定线程文化不会在每次页面加载时重置。我们有许多规则来确定文化,而不仅仅是浏览器标题。我相信重写 InitializeCulture(这是我们所做的)比更改 Application_BeginRequest 更可取。
  • 在这种情况下,唯一与您相关的部分是 michielvoo 的链接。您也可能是对的,对于 .aspx,InitializeCulture 可能是首选,如果它以某种方式集中,例如在母版页中。
  • 是的,我们部分覆盖 System.Web.UI.Page 页面就是为了这个目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
相关资源
最近更新 更多