我刚刚从Windows Sever 2003上的IIS 6迁移了大约100个ASP.net站点到Windows 2008上的IIS 7.我刚刚注意到使用DateTime.Parse之类的各种代码片段已经开始引发错误“字符串不是被认为是有效的DateTime“ . 我已经跟踪了这一事实,即网站的CurrentCulture默认为“en-US”,因此我的英国用户以意想不到的格式输入日期 .
问题是,他们从哪里来到美国?从顶部开始,如果我查看“控制面板>区域和语言”,一切都将设置为英语(英国) . 网站的web.configs没有<globalization>部分或者设置为<globalization culture =“auto”uiCulture =“auto”/> . 在'IIS7 - .Net全球化'中,所有网站都将其文化设置为“不变语言(Invariant Country)” .
我无法找到将文化设置为“en-US”的任何地方......但有些东西是 .
Thread.CurrentThread.CurrentCulture.Name is outputting 'en-US'
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol is outputting '$'
我可以通过在每个web.config中添加<globalization culture =“en-GB”uiCulture =“en-GB”/>来解决这个问题但是我真的不想手动编辑大约100个web.configs!我不想从服务器操作系统设置继承文化,这些设置设置为en-GB .
我错过了什么吗?
7 回答
这些是您可以搜索的替代地点:
尝试寻找
InitializeCulture
方法,在ASP.Net页面中重写此方法以设置文化,如:尝试查找以下程序集属性:
尝试查找以下页面指令属性:
尝试查看web.configs:
编辑1
尝试寻找设置语言的HttpHandlers或HttpModules
尝试查看web.config层次结构(在服务器上,
<wwwroot>
表示IIS网站的根文件夹)全球机器 .
<windir>\Microsoft.NET\Framework\<ver>\Config\Machine.config
Root Web配置 .
<windir>\Microsoft.NET\Framework\<ver>\Config\Web.config
网站 .
<wwwroot>\Web.config
Web应用程序 .
<wwwroot>\<webapp>\Web.config
文件夹 .
<wwwroot>\<webapp>\<dir>\Web.config
如果您有多个服务器(Web场),请检查您是否被重定向到正确的服务器(您正在检查配置的服务器),为了做到这一点,您可以使用所需服务器的IP或配置您的主机文件客户电脑
如果我在根web.config(windir \ Microsoft.NET \ Framework \ ver \ Config \ Web.config)中添加全球化部分,设置为en-GB,它确实解决了我的问题并传播到其他站点 . 哪种解决了我的问题 . 仍然没有解释默认情况下从哪里获得en-US但是应该这样做 . 谢谢 .
我遇到了同样的问题,经过几个小时后我发现即使区域设置正确,我也需要更改 all 保留帐户(例如ASP.NET)的原始文化 .
这是通过“区域设置”中“管理”选项卡下的“复制设置...”按钮完成的 . 如果启用“欢迎屏幕和系统帐户”复选框,则会复制设置 .
它可以来自用于运行应用程序池或Web应用程序的系统帐户的文化 .
检查此链接:different culture settings between IIS and ASP.NET
.Net Web应用程序正在提升您浏览器的默认文化 . 对于例如在FF中,默认语言设置如下图所示 .
因此,如果您希望网站的文化不是来自浏览器的文化,请使用页面的InitializeCulture方法(创建一个BasePage并在此处保留下面的代码并从此BasePage继承现有页面) .
就我而言,我的应用程序池作为我的域用户运行,其当前文化设置为en-GB,并且应用程序在en-GB日期格式下正常运行 .
我改变了应用程序池,以便在网络服务下运行,突然之间,由于应用程序现在使用的是en-US文化,DateTime.Parse调用正在中断 . 我看到了一些关于IIS文化是如何用户特定的SO帖子(e.g),这解释了这一点 .
在IIS管理器中打开根元素的.NET全球化并将Culture和UI Culture设置为英语英语(en-GB)为我修复了它 .
只是为了帮助别人得到同样的问题....
在尝试改变IIS文化之后,设置全球化并且到目前为止还没有成功,我做到了Global.asax中: