ASP.NET Globalization: Culture = "auto" директива страницы с нейтральным крахом культуры? - PullRequest
7 голосов
/ 22 августа 2009

Я сталкиваюсь с ситуацией, когда происходит сбой приложения ASP.NET, использующего встроенные средства глобализации.

На странице ASP.NET с директивой Culture = "auto" пользователь с нейтральной культурой в качестве языка браузера (например, "zh-Hans") выдаст следующее исключение:

Культура "Ж-Ханс" - это нейтральная культура. Это не может быть использовано в форматирование и анализ и, следовательно, не может быть установлен как текущий поток культура.

в System.Globalization.CultureInfo.CheckNeutral (CultureInfo культура) в System.Threading.Thread.set_CurrentCulture (CultureInfo значение) в System.Web.UI.Page.set_Culture (String значение) в ASP.somePage_aspx .__ BuildControlTree (somePage_aspx __ctrl) в ASP.somePage_aspx.FrameworkInitialize ()

Есть идеи? Мусор, подаваемый в параметры Culture / UICulture, обычно игнорируется, но этот случай вызывает необработанное исключение.

Ответы [ 3 ]

6 голосов
/ 03 ноября 2009

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

У меня была проблема с непониманием разницы между CurrentCulture и CurrentUICulture . Разница в том, что CurrentCulture используется для форматирования дат, чисел и выполнения сортировки, CurrentUICulture используется для поиска специфичных для культуры строк из ресурса.

У меня был какой-то код, похожий на

return input.ToString("C", System.Globalization.CultureInfo.CurrentUICulture);

когда это должно было быть

return input.ToString("C", System.Globalization.CultureInfo.CurrentCulture);

Когда вы начнете пытаться отформатировать специфичные для культуры элементы с неспецифической культурой, вы получите исключение System.NotSupportedException.

3 голосов
/ 01 сентября 2009

Во-первых, вы можете рассмотреть возможность установки UICulture = "auto", а также Culture = "auto" в объявлении <% @ Page%>.

Теперь я не вижу этого репродукции в моей установке .NET 4.0 (бета), так что это может быть ошибка продукта в .NET 3.5.

Вот отличный ресурс для изучения нейтральных культур и различий между культурой и культурой: http://blogs.msdn.com/ddietric/archive/2008/02/05/yacvcp-yet-another-currentculture-vs-currentuiculture-post.aspx

Надеюсь, это полезно.

2 голосов
/ 26 августа 2009

Не можете ли вы установить культуру по запросу начала? (Примечание: запросы asp.net могут перемещаться между потоками, поэтому вам также необходимо подключиться к движущемуся потоку.)

...