【问题标题】:Currency formatting different on different sites不同网站的货币格式不同
【发布时间】:2012-10-30 19:38:23
【问题描述】:

我在这里遇到了一个奇怪的问题,我不确定是它的 ASP.NET 版本、IIS 还是我做了一些愚蠢的事情(经验告诉我它可能是第 3 项。)

我有 2 个网站在 w2k3 上运行良好,1 个是 ASP.NET 1.1,另一个是 2.0,货币在网页上正确显示。

自从将这些迁移到 w2k8 框和 IIS 7 后,我遇到了一个奇怪的问题,即 1.1 站点现在显示的是 $ 而不是用户浏览到的本地货币。但是 2.0 的网站运行良好。

两者都将 IIS 设置为相同的全球化。 (没有文化,客户端是假的,UI 文化是英语 (en))。

两个站点都托管在同一台服务器上,我能看到的唯一区别是; 1 使用<Databinder.Eval(... Price, "{0:c}")> 绑定,另一个绑定到使用String.Format("{0:c}"); 的属性

所以作为代码没有改变我觉得这是一个 IIS 问题。但由于这两个站点在 IIS 中具有相同的全球化设置,我认为不可能。

那么,有谁知道发生了什么以及如何解决它?

【问题讨论】:

  • 查看其他 SO 答案以获得可能的解决方案:stackoverflow.com/a/5763347/139917
  • 我明天会调查,但由于这是一个旧的/笨重的网站,我会尽可能避免干扰 :) 谢谢,如果我必须去,我会回复沿着那条路
  • 是否可以在您的应用程序中添加一些调试代码?例如在你输出当前文化的 global.asax 中?您是否对所有网站使用相同的浏览器?

标签: asp.net iis globalization


【解决方案1】:

从新服务器的控制面板中检查区域和语言选项,并确保它们与旧机器上的类似设置相匹配。

【讨论】:

  • 他们有,但如果他们没有;那么我希望这两个网站都以美元工作,而不是一个美元和一个英镑。
【解决方案2】:

AFAIK,至少String.Format("{0:c}") 和可能<Databinder.Eval(... Price, "{0:c}")> 也将使用属性System.Threading.Thread.CurrentCulture 的值。

不管你是否在页面上设置它,值都会被分配给它。可以合理地认为,这些设置将来自服务器设置,根据您的描述,服务器设置似乎是 en-US。因此 $ 作为货币符号...您可能会问自己为什么它之前有效...
那么,你确定你已经复制了所有的配置文件吗?
另一个线索可能是,您模拟了 .Net 1.1 版本,而不是新盒子上的真实版本。它可能不是 100% 兼容...

【讨论】:

  • 服务器设置为英国文化和英国货币符号等。我相信你可能是正确的,问题源于它不是真正的1.1。我将不得不实施代码修复以强制每个页面使用正确的文化来解决这个问题。 (或以此为理由获得升级网站的预算。)
【解决方案3】:

在英国机器服务器 2012 上开发的运行 IIS 10 站点已移至美国“开箱即用”的 GCP 默认构建服务器 2016。

在网站上 $ 符号出现在过去 £ 符号的位置。

我在“设置”>“区域和语言”中更改了所有可能的内容。英国语言、键盘、更新和安全、左侧驱动器等。绝对没有任何区别。

终于在控制面板>地区找到了。添加英国英语作为显示语言后(并摆脱美国英语)

我需要进入管理选项卡、欢迎屏幕和新用户帐户。复制设置。

现在网站终于可以显示正确的货币符号了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 2019-09-24
    • 2018-08-20
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多