【问题标题】:ASP.net problem with Regional & Language Options (win2k3)区域和语言选项 (win2k3) 的 ASP.net 问题
【发布时间】:2011-04-23 09:04:04
【问题描述】:

我有一个 Asp.net 形式的 TextBox。有一个简单的 javascript 女巫分隔 TextBox 中的每三个数字。当您在 TextBox 中输入数据时,它工作正常。我使用逗号, 分隔数字并使用点. 作为浮点字符。

正如我所说,当我在 TextBox 中输入数据时,一切正常。但是当回发发生并且保存的数据返回到客户端时,每个.(s) 已被删除(例如2.3 保存为23 并且TextBox 中的数字由. 分隔而不是,.

这个问题只发生在特定的服务器(windows server 2003 sp1)中,并且在其他 windows server 2003 (SP1) 中可以正常工作!我第一次遇到这个问题!

但我认为问题在于服务器中的特定区域和语言选项。此服务器已加入域控制器。当我将区域和语言选项更改为此设置时:

十进制符号 -> .

数字分组符号 -> ,

没有任何变化。

当我在自定义设置后检查以下项目时:

将所有设置应用于当前用户帐户和默认用户配置文件 -> checked

当我重新启动服务器时,它从域中跳出,需要重新加入域控制器!当然,一切都不会再改变了!

你有这个问题吗?请有任何解决方案!

我不能在这里发布代码,因为代码太复杂了,我确信问题不是因为代码,因为它在任何地方都可以工作,除非指定的服务器。

编辑

同时为网络服务用户设置区域和语言选项可能有助于解决问题。任何人都知道我该怎么做?

【问题讨论】:

  • 您在哪里应用了这些设置?您是否尝试将正确的文化应用到您的 ASP 线程?
  • @user492238 这是两个不同的问题!请仔细阅读帖子正文。

标签: asp.net windows-server-2003 regional-settings


【解决方案1】:

您是否尝试过在 web.config 中使用全球化标签?这可以防止您在多台服务器配置不同(即不同的语言包)时遇到麻烦。

<configuration>
   <system.web>
      <globalization 
         culture="en-US"
         uiCulture="en-US" />
   </system.web>
</configuration>

【讨论】:

  • 这是一个单一的文化应用程序,默认设置为 en-US。放置此代码没有帮助。问题是因为服务器配置!
  • +1 似乎绝对是一个全球化问题。明确设置文化可以防止不同服务器配置出现意外情况。
  • 这个解决方案对我没有帮助,但在其他情况下可能会解决这样的问题!接受。
【解决方案2】:

在解决了很久很久的类似问题之后,我在一些线索的帮助下做了以下事情(在 StackOverFlow 上也发现了,顺便说一下 StackOverFlow 摇滚......)

我做的第一件事是转储服务器的实际想法(Page_Load):

var dtInfo = System.Globalization.DateTimeFormatInfo.CurrentInfo;
DisplayDebugInfo(String.Format(
    "Culture({0}/{1}), DateFormat(SD:{2},DS:{3})",
    System.Globalization.CultureInfo.CurrentCulture.Name,
    System.Globalization.CultureInfo.CurrentUICulture.Name,
    dtInfo.ShortDatePattern, dtInfo.DateSeparator));

同样在 Windows 2003 上,我尝试通过常规控制面板修复区域设置,但没有成功。

我还尝试在 web.config 中设置全球化设置,如其他解决方案中所述,但效果不大。

似乎一旦你开始搞乱区域设置,你很快就会到事情搞砸的地步。我决定避免弄乱注册表并寻求代码解决方案,因为这样我就不必担心当我的代码发布到生产环境时。

我将以下代码添加到我的页面的基类中,以便它可以在任何地方修复它。您也可以将它放在 Page_Load 中。

using System.Globalization;
using System.Threading;

// Fix the cultural settings...
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
culture.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = culture;

问题解决了。反正对我来说。

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多