asp.net - CurrentCulture 在 ASP.net 中错误地默认为 en-US

标签 asp.net globalization culture uiculture

我刚刚将大约 100 个 ASP.net 站点从 Windows Sever 2003 上的 IIS 6 迁移到 Windows 2008 上的 IIS 7。被识别为有效的日期时间”。我已经将此归结为以下事实:站点的 CurrentCulture 默认为“en-US”,因此我的英国用户以意外的格式输入日期。

问题是,他们从哪里得到 en-US?从顶部开始,如果我查看“控制面板 > 区域和语言”,所有内容都设置为英语(英国)。网站的 web.configs 要么没有 部分,要么将其设置为 。在“IIS7 - .Net 全局化”中,所有站点的文化都设置为“不变语言(不变国家/地区)”。

我找不到任何将文化设置为“en-US”的地方……但确实如此。

Thread.CurrentThread.CurrentCulture.Name is outputting 'en-US'
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol is outputting '$'

我可以通过将 添加到每个 web.config 来解决这个问题,但我真的不想手动编辑大约 100 个 web.configs!我不想从设置为 en-GB 的服务器操作系统设置中继承文化。

我错过了什么吗?

最佳答案

这些是您可以搜索的替代位置:

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
  • 根 Web 配置。 <windir>\Microsoft.NET\Framework\<ver>\Config\Web.config
  • 网站。 <wwwroot>\Web.config
  • Web应用程序。 <wwwroot>\<webapp>\Web.config
  • 文件夹。 <wwwroot>\<webapp>\<dir>\Web.config

  • 如果您有多个服务器(网络场),请检查您是否被重定向到正确的服务器(您正在检查配置的服务器),为了做到这一点,您可以使用所需服务器的 ip 或在您的客户端计算机

    关于asp.net - CurrentCulture 在 ASP.net 中错误地默认为 en-US,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135002/

    相关文章:

    .net - 在低于 10 的 Windows 版本上安装 ClickOnce 应用程序时出错

    c# - ASP.Net MVC 4 Web API Controller 不适用于 Unity.WebApi

    c# - 强制.Net程序使用 '.'作为十进制符号

    asp.net - 根据文化显示正确的日期格式

    c# - 如何从资源文件加载自定义验证器上的错误消息?

    c# - 日期时间支持的格式化语言?

    culture - 公司盗版软件?

    javascript - 使用 Javascript 获取空值

    c# - WebService调用异常: Thread was being aborted

    c# - ASP.NET : Possible to create a UserControl that include inside markup content?