我刚刚将大约 100 个 ASP.net 站点从 Windows Sever 2003 上的 IIS 6 迁移到 Windows 2008 上的 IIS 7。被识别为有效的日期时间”。我已经将此归结为以下事实:站点的 CurrentCulture 默认为“en-US”,因此我的英国用户以意外的格式输入日期。
问题是,他们从哪里得到 en-US?从顶部开始,如果我查看“控制面板 > 区域和语言”,所有内容都设置为英语(英国)。网站的 web.configs 要么没有
我找不到任何将文化设置为“en-US”的地方……但确实如此。Thread.CurrentThread.CurrentCulture.Name is outputting 'en-US'
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol is outputting '$'
我可以通过将
我错过了什么吗?
最佳答案
这些是您可以搜索的替代位置:
I can't find anywhere that's settings the culture to 'en-US'... but something is.
Thread.CurrentThread.CurrentCulture.Name is outputting 'en-US' Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol is outputting '$'
尝试寻找
InitializeCulture
方法,此方法在 ASP.Net 页面中被覆盖以设置文化,如:protected override void InitializeCulture()
{
var hidden = this.Request.Form["hidden"];
var culture = this.Request.Form[hidden];
if (!string.IsNullOrWhiteSpace(culture))
{
this.Culture = culture;
this.UICulture = culture;
}
base.InitializeCulture();
}
尝试查找以下程序集属性: [assembly: AssemblyCulture("en-US")]
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
尝试查找以下页面指令属性: <%@ Page Culture="en-US" UICulture="en-US" Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
尝试查看 web.configs:<globalization uiCulture="en-US" culture="en-US" enableClientBasedCulture="false" />
编辑 1尝试寻找尝试设置语言的 HttpHandlers 或 HttpModules
尝试查看 web.config 层次结构(在服务器上,
<wwwroot>
表示您的 IIS 网站的根文件夹)<windir>\Microsoft.NET\Framework\<ver>\Config\Machine.config
<windir>\Microsoft.NET\Framework\<ver>\Config\Web.config
<wwwroot>\Web.config
<wwwroot>\<webapp>\Web.config
<wwwroot>\<webapp>\<dir>\Web.config
如果您有多个服务器(网络场),请检查您是否被重定向到正确的服务器(您正在检查配置的服务器),为了做到这一点,您可以使用所需服务器的 ip 或在您的客户端计算机
关于asp.net - CurrentCulture 在 ASP.net 中错误地默认为 en-US,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135002/