我正在创建一个HttpModule,它需要知道MVC应用程序中设置的Thread.CurrentThread.CurrentCulture的值。该值当前由BaseController设置,但是当我的HttpModule.PostRequestHandlerExecute()方法触发时,它将恢复到文化在页面呈现之前的状态。
我通过使用以下步骤创建一个简单的Web应用程序来重复此操作:
知道为什么.Net会改变这个价值或者我如何解决这个问题?线程是一样的,所以.Net中的某些东西必须明确地恢复文化。
答案 0 :(得分:2)
如果您只是为正在运行的线程设置文化,那么任何导致线程切换的操作(例如asp.net中页面生命周期的另一部分)都将导致恢复为默认文化。
推荐的方法是......
http://msdn.microsoft.com/en-us/library/bz9tc508.aspx
本页讨论3个选项......
值得注意的是,任何模块都是作为页面请求的一部分加载的,因此在页面级别更改文化应该为该请求中的所有模块更改它。