【问题标题】:Bug in ASP.NET 2.0 when handling browser culture处理浏览器文化时 ASP.NET 2.0 中的错误
【发布时间】:2011-12-16 18:00:23
【问题描述】:

我的网络配置中有这个设置:

<globalization culture="auto" uiCulture="auto"/>

代码在VS 2010中编译。

如果目标平台设置为 .NET 2.0 或 3.0,则它仅适用于 IE,我在 Chrome 上收到此错误

“文化‘es’是一种中性文化。它不能用于格式化 和解析,因此不能设置为线程的当前 文化。”

如果目标平台是 .NET 4.0,它适用于 IE 和 Chrome。

这是 ASP.NET 2.0/3.0 中的错误吗?有解决办法吗?

【问题讨论】:

    标签: asp.net culture


    【解决方案1】:

    听起来这可能是一个错误。你能发布堆栈跟踪吗?

    您也可以尝试使用 Fiddler 等工具查看两个浏览器发送的 Accept-Language 标头,以了解区别。

    请注意,使用 IE,您可以控制在 Accept-Language 标头中发送的内容。只需打开 IE 并在工具/Internet 选项/常规中,单击语言按钮。单击添加,例如添加自定义语言“es”,并将其移至列表顶部。

    更新

    听起来类似于the problem described in this StackOverflow question

    该问题中的堆栈跟踪显示异常是在 Page.Culture 属性设置器中引发的。我会说这是一个错误。并且可能已在最新版本的框架中修复(我无法使用 .NET 3.5 和最新的服务包重现它)。

    【讨论】:

    • 该行抛出异常:Culture c = System.Threading.Thread.CurrentThread.CurrentUICulture Chrome 在 IE 发送时在 Accept-Language 标头中发送“es,en-US;q=0.8” “es-MX,es;q=0.8”。我在 IE 中添加了自定义语言,问题也出现了。
    【解决方案2】:

    最终使用 CultureInfo.CreateSpecificCulture。它在大多数情况下都有效。

    .NET 4 允许为格式化设置中性文化。它会为该语言选择人口最多的文化,这就是我所听到的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多