CultureNotFoundException: Культура не поддерживается после обновления до .net 4 - PullRequest
3 голосов
/ 23 февраля 2011

Мы устанавливаем культуру на собственную культуру, используя CultureInfo (customCulture)

Мы создаем customCulture в global.cs в app_start на всякий случай.

На моем локальном ПК это работает нормально. Однако на веб-сервере, когда я иду, чтобы установить культуру, я получаю сообщение об ошибке, что культура не поддерживается? Я проверил папку Windows \ Globalization и там есть файл культуры для правильной культуры?

Тот же код работал нормально под 3.5?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

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

        using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Globalization;

    namespace InstallCulture
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Is CustomCulture already installed?
                string parentCultureName = "en-GB";
                string extendedName = "custom";
                System.Globalization.CultureInfo[] userCultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.UserCustomCulture);
                Console.WriteLine(string.Format("number of user cultures:{0}", userCultures.Count()));
                Console.WriteLine(string.Format("Setting culture {0}-{1}", parentCultureName, extendedName));
                // Install CustomCulture based on language parent.
                System.Globalization.CultureAndRegionInfoBuilder builder = new System.Globalization.CultureAndRegionInfoBuilder(
                        string.Format("{0}-{1}", parentCultureName, extendedName),
                        System.Globalization.CultureAndRegionModifiers.None);

                builder.LoadDataFromCultureInfo(new System.Globalization.CultureInfo("en-GB"));
                builder.LoadDataFromRegionInfo(new System.Globalization.RegionInfo("GB"));
                Console.WriteLine("CultureName:. . . . . . . . . . {0}", builder.CultureName);
                Console.WriteLine("CultureEnglishName: . . . . . . {0}", builder.CultureEnglishName);
                Console.WriteLine("CultureNativeName:. . . . . . . {0}", builder.CultureNativeName);

                foreach(System.Globalization.CultureInfo cultInfo in userCultures)
                {
                    Console.WriteLine("Found culture in userCultures");
                    if(cultInfo.Name.ToLower() == string.Format("{0}-{1}", parentCultureName, extendedName).ToLower())
                    {
                        Console.WriteLine(string.Format("{0} already registered", cultInfo.Name));
                        CultureAndRegionInfoBuilder.Unregister("en-GB-custom");
                        Console.WriteLine("Unregistered culture en-GB-custom");
                    }
                }

                Console.WriteLine("Registering culture en-GB-PolHol");
                builder.Register();
                Console.WriteLine("Create new culture info object");
                System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-GB-custom");
                Console.WriteLine("Name: . . . . . . . . . . . . . {0}", culture.Name);
                Console.WriteLine("EnglishName:. . . . . . . . . . {0}", culture.EnglishName);
                Console.WriteLine("NativeName: . . . . . . . . . . {0}", culture.NativeName);
                Console.WriteLine("Set threads to new culture");
                System.Threading.Thread.CurrentThread.CurrentCulture = culture;
                System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
                Console.WriteLine("Set culture done");
            }
        }
    }
1 голос
/ 15 марта 2016

Я следовал многочисленным инструкциям по добавлению пользовательской культуры и на локальной машине, если работал отлично. Тем не менее, я получил CultureNotFoundException в конструкторе CultureInfo на сервере разработки с ошибкой в ​​имени. Файл nlp был создан правильно, и я подозреваю, что проблема была в реестре, но я не смог найти какой-либо ресурс по этому поводу. Более того, он повредил отображение любого другого языка на машине для всех других приложений.

В конце концов я последовал Руководству разработчика по созданию глобальных Windows и веб-приложений: Глава 11 - Пользовательские культуры для проекта кода и заменил существующую культуру необходимыми изменениями, которая работает правильно.

Тем не менее, я удивляюсь, почему моя оригинальная культура не сработала, а замена сработала В любом случае я тоже хотел поделиться своим опытом.

...