对于特定的区域性,"pt-PT“的CultureInfo值有一些问题。为了缩小范围,我在VS 2017年使用.net框架创建了一个MVC项目,并在视图About.cshtml中添加了以下一行:
<p>@(new System.Globalization.CultureInfo("pt-PT").DateTimeFormat.FirstDayOfWeek)</p>这是我对visual创建的项目所做的唯一更改。
当我在VS中使用IIS运行这个项目时,FirstDayOfWeek返回的值是“星期一”。
但是,如果我在IIS中运行此项目(在同一台计算机上),则FirstDayOfWeek返回的值为“Sunday”。
我原以为这个价值是一样的,也是‘星期一’。我对价值观的差异感到困惑,并希望在理解它方面有所帮助。
注意:经过进一步测试后,我得出的结论是,如果我在计算机设置中更改了一周的第一天,在IIS中运行该项目时就会反映该更改。我更困惑..。我想这个财产是没用的..。
发布于 2017-09-21 13:19:26
默认情况下,IIS使用DateTimeInfo.InvariantInfo,它返回Sunday作为其FirstDayOfWeek值(也使用美国日期格式)。如果您不确定IIS (not )为什么使用与您使用的不同的区域性,请在Application_BeginRequest处理程序中在Global.asax代码中设置区域性信息:
protected void Application_BeginRequest(object sender, EventArgs e)
{
string culture = "pt";
if (HttpContext.Current.Request.Path.Contains("pt"))
{
culture = "pt"; // Portuguese, use 'pt-PT' if not sure
}
else
{
// set to other cultures, including invariant (default) one
}
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
}或者使用globalization元素在web.config文件中设置Thread.Culture & Thread.UICulture
<globalization culture="pt-PT" uiCulture="pt" />如果上述所有设置都无法工作,请使用以下步骤:
iisreset命令应用所有更改。注意:作为一般惯例,站点不应该依赖服务器的应用程序池设置来按照预期的方式处理指定的地区/区域性。有关区域性设置的详细信息,请参阅为ASP.NET网页全球化设置文化和UI文化。
还请检查应用程序池的区域设置是否设置为NetworkService的用户帐户,必要时将其更改为LocalSystem。
类似问题:
https://stackoverflow.com/questions/46340728
复制相似问题