【问题标题】:Can CultureInfo.CurrentCulture differ per application pool?CultureInfo.CurrentCulture 能否因应用程序池而异?
【发布时间】:2010-06-10 15:11:22
【问题描述】:

我在我们的 ASP.NET Web 应用程序中遇到了 CultureInfo 问题。我们的 Web 应用程序返回不同的文化,具体取决于它所在的应用程序池。

在应用程序池 A 中,它是 en-US,但在应用程序池 B 中,它是 nl-BE。

我希望它是 nl-BE,但找不到在哪里更改它(顺便说一下 IIS6)。我什至不确定这是否可以在应用程序池级别进行更改。

我正在检查 CultureInfo.CurrentCulture.Name。

是否可以为应用程序池更改此设置?或者还有什么可以影响这一点?在服务器的区域设置中,我们选择了“Dutch (Belgium)”,我相信它的意思是 nl-BE。那么这个应用程序池在哪里可以获得 en-US 呢?

【问题讨论】:

    标签: web-applications culture cultureinfo currentculture


    【解决方案1】:

    是的,它可以不同。这是每个线程的属性。您可以为每个线程单独设置CurrentCulture。

    您确定您没有在代码中的某处更改设置吗?两个测试的<globalization> setting 是否相同?

    如果您想强制使用特定文化,请尝试以下操作:

    <globalization culture="en-US" uiCulture="en-US" />
    

    【讨论】:

    • 但是如果我没有在任何地方的代码中设置它,我怎么能把它改回来呢?还是我必须回收应用程序池?
    • @Peter:添加全球化标签以强制特定文化。顺便问一下,应用池是否与其他应用共享?
    • 它不与其他应用共享,但我不能说我们对服务器拥有唯一的控制权。但是回收应用程序池已经解决了这个问题。它是如何成为 en-US 的是一个谜,但感谢您指出我的答案。顺便在我们的 web.config 中尝试了全球化标签,但没有帮助。
    • @Peter:线程在单个进程(= 应用程序池)中的应用程序域之间共享。由于 ASP.NET 请求是由从线程池中取出的线程处理的,因此该线程可能将其文化设置为以前的其他内容。我自己没有遇到过这种情况,但这是我最好的猜测。
    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多