【问题标题】:Where to set CultureInfo for a single HTTP request为单个 HTTP 请求设置 CultureInfo 的位置
【发布时间】:2014-08-22 11:53:27
【问题描述】:

我需要为我的 MVC 3 应用程序中的每个请求设置特定的文化。 (文化由用户的个人资料偏好决定,或者如果没有设置,则由区域恢复为默认值)。如果我在请求管道中的某处设置Thread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICulture,我担心它会:

  1. 在请求中间更改线程(以及文化)
  2. 稍后重复使用相同的线程并保持错误的文化

根据this Q 中的信息,这两个似乎都是合理的。

【问题讨论】:

    标签: asp.net multithreading cultureinfo


    【解决方案1】:

    您可以在全局 asax 文件中使用 HttpApplicationBeginRequest 方法。 Check this answer.

    这将确保每个请求都能立即正确设置,而不必担心线程重用。

    【讨论】:

    • 建议的解决方案有效。开始请求方法作为请求线程上的第一个程序可访问点运行,而不是更改线程文化的好地方。
    • 如链接 Q 中所述,请求可以在请求中间更改线程。如果BeginRequest 在请求在一个线程中时触发,然后请求移动,我有什么保证文化会随着请求移动?
    • 请求无法更改线程。请求由一个线程处理整个请求。您可以启动许多其他工作线程(您必须在创建它们的地方为它们手动维护线程文化)但请求仅在一个线程中处理。
    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2014-02-13
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    相关资源
    最近更新 更多