Symptome
Auf einem Computer, auf dem Microsoft Windows Server 2003 installiert ist, installieren Sie das Microsoft .NET Framework 2.0-Softwareupdate, das im folgenden Artikel der Microsoft Knowledge Base beschrieben wird:
928365 Hinweise zum Sicherheitsupdate für die .NET Framework 2.0 für Windows Server 2003, Windows XP und Windows 2000: 10. Juli 2007
Wenn Sie auf dem Computer eine Anwendung ausführen oder versuchen, auf eine Website zuzugreifen, wird möglicherweise die folgende Fehlermeldung angezeigt:
Hinweis
[System.ArgumentException] : Der Kulturname "Culture" wird für die folgenden 13 Kulturen nicht unterstützt: 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
Wenn eine Anwendung über Ressourcen verfügt, die das alte Kulturnamenformat verwenden, und wenn der Kulturname des Benutzers das neue Kulturnamenformat verwendet, kann die Anwendung keine Ressourcen für das alte Kulturnamenformat finden.
Ursache
Das im Abschnitt "Symptome" erwähnte Softwareupdate ist ein kumulatives Update für .NET Framework 2.0. Dieses Update enthält Änderungen an den Kulturnamen. Die neuen Kulturnamen folgen der Syntax der IETF-Standards (RFC 4646 und RFC 4647). Die Änderungen an den Kulturnamen verbessern die Interoperabilität, indem sichergestellt wird, dass jedes Gebietsschema über einen einheitlichen Bezeichner verfügt.
Die Zuordnungen der alten Kulturnamen zu den neuen Kulturnamen lauten wie folgt:
| Name der alten Kultur | Name der neuen Kultur |
|---|---|
| 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 | de-029 |
Problemumgehung
Um dieses Problem zu umgehen, erstellen Sie benutzerdefinierte Kulturen aus den neuen Gebietsschemas, die die alten Kulturnamen verwenden. Führen Sie hierzu folgende Schritte aus.
Hinweis: Sie müssen das .NET Framework 2.0 installiert haben, um das hier bereitgestellte Beispielprogramm verwenden zu können.
Erstellen Sie eine Anwendung, die zum Erstellen einer benutzerdefinierten Kultur verwendet werden kann. Führen Sie hierzu die folgenden Schritte aus:
Klicken Sie auf "Start" und auf "Ausführen", geben Sie "Editor" ein und klicken Sie dann auf OK.
Fügen Sie den folgenden Code in Notepad ein.
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); } } }Hinweis: Dieses Beispielprogramm setzt die Eltern der neuen Kulturen auf die alten Kulturen. Die Eltern der alten Kulturen können nicht gleichzeitig die neuen Kulturen sein, da diese Situation bei der Ressourcensuche zu einer unendlichen Rekursion führen würde.
Klicken Sie im Menü Datei auf Speichern unter.
Klicken Sie im Dialogfeld Speichern unter auf Mein Dokument, geben Sie MakeCultures.cs in das Feld Dateiname ein, klicken Sie im Feld Dateityp auf Alle Files, und klicken Sie dann auf Speichern.
Beenden Sie Editor.
Führen Sie die Anwendung aus, die Sie in Schritt 1 erstellt haben, um eine benutzerdefinierte Kultur zu erstellen. Führen Sie hierzu die folgenden Schritte aus:
- Klicken Sie auf Start und auf Ausführen, geben Sie „cmd“ ein, und klicken Sie dann auf OK.
- Geben Sie cd "Meine Dateien" ein, und drücken Sie die EINGABETASTE
- Geben Sie %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs ein, und drücken Sie die EINGABETASTE.
- Geben Sie MakeCultures.exe ein, um das Programm zum Erstellen der Kultur auszuführen.
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.