这是此问题的更具体,更清晰的版本 - Different DateTimeFormat for dev and test environment
在我的ASP.NET MVC项目中global.asax.cs的 Application_BeginRequest()方法中有代码:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
当我在Controller Action上设置断点时,我看到Thread.CurrentThread.CurrentCulture的以下值:
问题是 - IIS中的哪些设置对此负责以及如何覆盖它?
答案 0 :(得分:124)
您可以在web.config中指定它,而不是设置Thread的文化:
<configuration>
<system.web>
<globalization uiCulture="en-GB" culture="en-GB" />
</system.web>
</configuration>
这是在ASP.NET中指定文化的更“恰当”的方式。
答案 1 :(得分:18)
好吧,我实际上并没有找到IIS设置的责任,但是我已经在 Application_PreRequestHandlerExecute()中覆盖了它,它最终起作用了:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
答案 2 :(得分:6)
我认为让客户(即用户代理/浏览器)决定他想要的文化是一个不错的选择。
这可以通过将web.config中culture
元素的uiCulture
和globalization
属性设置为auto
来完成。参见&#34;版本1&#34;。
您还可以执行以下操作:执行broswers设置,但如果不可能则使用en-US
作为后备值。请参阅&#34;版本2&#34;。
版本1:
<configuration>
<system.web>
<globalization culture="auto" uiCulture="auto"/>
</system.web>
</configuration>
版本2:
<configuration>
<system.web>
<globalization culture="auto:en-US" uiCulture="auto:en-US" />
</system.web>
</configuration>
有关详细信息,请参阅此文章:Auto Detecting and Setting ASP.NET Locale based on Browser Locale
答案 3 :(得分:0)
要在MVC中为您的应用设置默认的Culture,您可以在 RouteConfig 类中轻松添加此路径:
foreach (var route in routes.Cast<Route>().Where(route =>
route.GetType() == typeof(MultiLingualRoute)))
{
route.Url = "{language}/" + route.Url;
route.Defaults.Add("language", "YOUR-DEFAULT");
}