Проблема ASP.net с региональными и языковыми настройками (win2k3) - PullRequest
1 голос
/ 23 апреля 2011

У меня есть TextBox в форме Asp.net. Существует простая javascript-ведьма, разделяющая каждые три цифры в TextBox. он отлично работает при вводе данных в TextBox. Я использовал кома , для разделения цифр и использовал точку . в качестве символа с плавающей точкой.

как я уже сказал, все работает нормально, когда я вводю данные в TextBox. но когда происходит обратная передача и сохраненные данные возвращаются клиенту, каждые . (s) удаляются (например, 2.3 сохраняется как 23, а цифры в TextBox отделяются . вместо ,.

Эта проблема возникает только на определенном сервере (Windows Server 2003 SP1) и отлично работает в других Windows Server 2003 (SP1)! Я впервые столкнулся с этой проблемой!

Но я думаю, что проблема из-за определенных региональных и языковых параметров на сервере. Этот сервер подключен к контроллеру домена. когда я изменяю региональные и языковые параметры для этого набора:

Десятичный символ -> .

Символ группировки цифр -> ,

ничего не меняется.

при проверке следующего элемента после настройки параметров:

Применить все настройки к текущей учетной записи пользователя и к профилю пользователя по умолчанию -> checked

когда я перезагружаю Сервер, он выпрыгивает из домена и его нужно подключить к контроллеру домена! и, конечно же, ничего не меняется снова!

У вас была эта проблема? любое решение, пожалуйста!

Я не могу опубликовать код здесь, потому что код слишком сложен, и я уверен, что проблема не в коде, потому что он работает везде, кроме указанного сервера.

EDIT

Также решение региональных и языковых опций для пользователя услуги сети может помочь решить проблему. кто-нибудь знает, как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

Вы пытались использовать тег глобализации в своем файле web.config? Это предотвращает возникновение проблем, когда несколько серверов настроены по-разному (т. Е. Разные языковые пакеты).

<configuration>
   <system.web>
      <globalization 
         culture="en-US"
         uiCulture="en-US" />
   </system.web>
</configuration>
1 голос
/ 19 октября 2011

После того, как я долго бродил с похожей проблемой для 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;

Проблема решена.В любом случае для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...