У меня есть приложение ASP .NET Web Forms, которое использует атрибут «WebMethod» для выполнения вызовов AJAX из jQuery.Я имею дело с попыткой локализовать приложение, поэтому недавно я создал веб-метод, который выглядит примерно так для целей тестирования:
[WebMethod]
public static string HandleDate(DateTime dateValue)
{
return dateValue.ToString("f");
}
Смысл этого метода состоит в том, чтобы убедиться, что если я правильно установил CultureInfoвеб-метод правильно проанализирует предоставленную дату, используя правила форматирования даты для этой культуры.К сожалению, этот код никогда не достигается.Вместо этого я вижу ошибку, вызываемую вспомогательными классами, которые позволяют вызывать эти методы WebMethods.
У меня есть HttpModule, который устанавливает свойства 'CurrentCulture' и 'CurrentUICulture' текущего потока в 'pt-BR '(бразильский португальский) в событии' BeginRequest '.
На стороне клиента, у меня есть вызов JQuery AJAX для этого веб-метода' HandleDate ', который предоставляет параметр dateValue в виде '18 / 10/2010».В культуре 'pt-BR' это должно оцениваться до 18 октября 2010 г. (формат даты день / месяц / год).
Когда я выполняю это, я получаю сообщение об ошибке, указывающее, что System.Web.Script.Serialization.ObjectConverter 'взрывается, заявляя, что '18 / 11/2010' не является допустимым значением для DateTime.Трассировка стека, включенная в сообщение об ошибке, указывает, что она была сгенерирована методом System.ComponentModel.DateTimeCoverter.ConvertFrom, который принимает объект, подлежащий преобразованию, в дополнение к объекту CultureInfo, представляющему культуру, которая должна применяться во время преобразования.
Я запустил Reflector, и оказалось, что ObjectConverter вызывает «DateTimeConverter» с использованием экземпляра CultureInfo.InvariantCulture, что, по-моему, является проблемой.
Как заставить эту логику использоватьCultureInfo, прикрепленный к текущему потоку вместо InvariantCulture?