ASP.net问题与Regional&语言选项(win2k3)

时间:2011-04-23 09:04:04

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

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

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

此问题只发生在特定的服务器(Windows Server 2003 SP1)中,并在其他Windows Server 2003(SP1)中正常工作!我第一次遇到这个问题了!

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

十进制符号 - > .

数字分组符号 - > ,

没有任何改变。

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

将所有设置应用于当前用户帐户和默认用户个人资料 - > checked

当我重新启动服务器时,它会从域跳出来并需要重新加入域控制器!当然,没有什么变化了!

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

我不能在这里发布代码,因为代码太复杂而且我确定问题不是因为代码,因为它除了指定的服务器之外每个地方都在工作。

修改

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

在为WAY做了类似的问题后,我在一些线索的帮助下做了以下的事情(也可以在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;

问题解决了。对我来说无论如何。