Objawy
Na komputerze z zainstalowanym systemem Microsoft Windows Server 2003 należy zainstalować aktualizację oprogramowania Microsoft .NET Framework 2.0 opisaną w następującym artykule z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
928365 Opis aktualizacji zabezpieczeń dla programu .NET Framework 2.0 dla systemów Windows Server 2003, Windows XP i Windows 2000: 10 lipca 2007
Podczas uruchamiania aplikacji lub próby uzyskania dostępu do witryny sieci Web na komputerze może zostać wyświetlony następujący komunikat o błędzie:
Uwaga
[System.ArgumentException] : Nazwa kultury "Culture" nie jest obsługiwana dla następujących 13 kultur: en-CB az-AZ-Latn uz-UZ-Latn sr-SP-Latn az-AZ-Cyrl uz-UZ-Cyrl sr-SP-Cyrl bs-BA-Cyrl sr-BA-Latn sr-BA-Cyrl bs-BA-Latn iu-CA-Latn div-MV
Ponadto, jeśli aplikacja ma zasoby, które używają starego formatu nazwy kultury, a nazwa kultury użytkownika korzysta z nowego formatu nazwy kultury, aplikacja nie może znaleźć zasobów dla starego formatu nazwy kultury.
Przyczyna
Aktualizacja oprogramowania wymieniona w sekcji "Objawy" to zbiorcza aktualizacja programu .NET Framework 2.0. Ta aktualizacja obejmuje zmiany w nazwach kultur. Nowe nazwy kultur są zgodne ze składnią standardów IETF (RFC 4646 i RFC 4647). Zmiany nazw kultur poprawiają współdziałanie, zapewniając spójne identyfikatory dla poszczególnych ustawień regionalnych.
Mapowania starych nazw kultur na nowe nazwy kultur są następujące:
| Stara nazwa kultury | Nazwa nowej kultury |
|---|---|
| az-AZ-Latn | az-Latn-AZ |
| uz-UZ-Latn | uz-latn-uz |
| sr-SP-Latn | sr-latn-cs |
| az-AZ-Cyrl | az-cyrl-az |
| uz-UZ-Cyrl | uz-cyrl-uz |
| sr-SP-Cyrl | sr-cyrl-cs |
| bs-BA-Cyrl | bs-Cyrl-BA |
| sr-BA-Latn | sr-Latn-BA |
| sr-BA-Cyrl | sr-Cyrl-BA |
| bs-BA-Latn | bs-Latn-BA |
| iu-CA-Latn | iu-latn-ca |
| div-MV | dv-MV |
| en-CB | EN-029 |
Obejście
Aby obejść ten problem, stwórz kultury niestandardowe z nowych ustawień regionalnych, w których są używane stare nazwy kultur. W tym celu wykonaj następujące czynności.
Uwaga: aby korzystać z przykładowego programu udostępnionego tutaj, musisz mieć zainstalowaną wersję .NET Framework 2.0.
Utwórz aplikację, której można użyć do utworzenia kultury niestandardowej. W tym celu wykonaj następujące czynności:
Kliknij przycisk Start, kliknij polecenie Uruchom, wpisz polecenie Notatnik, a następnie kliknij przycisk OK.
Wklej poniższy kod do Notatnika.
using System; using System.Globalization; public class MakeCultures { static void Main() { CreateCopyCulture("en-029", "en-CB"); CreateCopyCulture("az-Latn-AZ", "az-AZ-Latn"); CreateCopyCulture("uz-Latn-UZ", "uz-UZ-Latn"); CreateCopyCulture("sr-Latn-CS", "sr-SP-Latn"); CreateCopyCulture("az-Cyrl-AZ", "az-AZ-Cyrl"); CreateCopyCulture("uz-Cyrl-UZ", "uz-UZ-Cyrl"); CreateCopyCulture("sr-Cyrl-CS", "sr-SP-Cyrl"); CreateCopyCulture("bs-Cyrl-BA", "bs-BA-Cyrl"); CreateCopyCulture("sr-Latn-BA", "sr-BA-Latn"); CreateCopyCulture("sr-Cyrl-BA", "sr-BA-Cyrl"); CreateCopyCulture("bs-Latn-BA", "bs-BA-Latn"); CreateCopyCulture("iu-Latn-CA", "iu-CA-Latn"); CreateCopyCulture("dv-MV", "div-MV"); } static void CreateCopyCulture(string strRealName, string strAliasName) { try { // Create a new culture based on the old name CultureAndRegionInfoBuilder carib = new CultureAndRegionInfoBuilder( strAliasName, CultureAndRegionModifiers.None); carib.LoadDataFromCultureInfo(new CultureInfo(strRealName)); carib.LoadDataFromRegionInfo(new RegionInfo(strRealName)); carib.Register(); // Change the existing culture's parent to the old culture carib = new CultureAndRegionInfoBuilder(strRealName, CultureAndRegionModifiers.Replacement); carib.Parent = new CultureInfo(strAliasName); carib.Register(); // Verify they're registered... CultureInfo ci = new CultureInfo(strAliasName); Console.WriteLine("Aliased culture {0} has parent of {1}.", ci, ci.Parent); ci = new CultureInfo(strRealName); Console.WriteLine("\"Real\" culture {0} has parent of {1}.", ci, ci.Parent); } catch (Exception e) { Console.WriteLine("Unable to create custom culture " + strAliasName); Console.WriteLine(e); } } }Uwaga: Ten przykładowy program ustawia rodziców nowych kultur na stare kultury. Rodzicami starych kultur nie mogą być jednocześnie nowe kultury, ponieważ taka sytuacja spowodowałaby nieskończoną rekurencję podczas wyszukiwania zasobów.
W menu Plik kliknij polecenie Zapisz jako.
W oknie dialogowym Zapisywanie jakokliknij pozycję Mój dokument, wpisz MakeCultures.cs w polu Nazwa pliku, kliknij pozycję Wszystkie Files w polu Zapisz jako typ, a następnie kliknij przycisk Zapisz.
Zamknij Notatnik.
Uruchom aplikację utworzoną w kroku 1, aby utworzyć kulturę niestandardową. W tym celu wykonaj następujące czynności:
- Kliknij przycisk Start, kliknij polecenie Uruchom, wpisz polecenie cmd, a następnie kliknij przycisk OK.
- Wpisz polecenie cd "Moje dokumenty", a następnie naciśnij klawisz ENTER
- Wpisz %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs, a następnie naciśnij klawisz ENTER.
- Wpisz MakeCultures.exe, aby uruchomić program budujący kulturę.
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.