Felmeddelande när du kör ett program eller försöker komma åt en webbplats på en dator som har en viss programuppdatering för .NET Framework 2.0 installerad: "Kulturnamnet 'Kultur' stöds inte"

Symptom

På en dator med Microsoft Windows Server 2003 installerat installerar du programuppdateringen Microsoft .NET Framework 2.0 som beskrivs i följande artikel i Microsoft Knowledge Base:

928365 Beskrivning av säkerhetsuppdateringen för .NET Framework 2.0 för Windows Server 2003, Windows XP och Windows 2000: 10 juli 2007

 När du kör ett program eller försöker komma åt en webbplats på datorn kan följande felmeddelande visas:

Obs

[System.ArgumentException] : Kulturnamnet "Culture" stöds inte för följande 13 kulturer: 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

Dessutom, om ett program har resurser som använder det gamla kulturnamnformatet, och om användarens kulturnamn använder det nya kulturnamnformatet, kan programmet inte hitta resurser för det gamla kulturnamnformatet.

Orsak

Programuppdateringen som nämns i avsnittet "Symptom" är en kumulativ uppdatering för .NET Framework 2.0. Den här uppdateringen innehåller ändringar av kulturnamnen. De nya kulturnamnen följer syntaxen i IETF-standarderna (RFC 4646 och RFC 4647). Ändringarna i kulturnamnen förbättrar interoperabiliteten genom att se till att varje språk har en konsekvent identifierare.

Mappningarna av de gamla kulturnamnen till de nya kulturnamnen är följande:

Namn på den gamla kulturen Nytt kulturnamn
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
sv-CB SV-029

Lösning

Undvik det här problemet genom att skapa anpassade kulturer från de nya språken som använder de gamla kulturnamnen. Följ anvisningarna nedan.

Obs! Du måste ha installerat .NET Framework 2.0 för att kunna använda exempelprogrammet som anges här.

  1. Skapa ett program som kan användas för att skapa en anpassad kultur. Gör följande:

    1. Klicka på Start, Kör, skriv anteckningar och klicka sedan på OK.

    2. Klistra in följande kod i Anteckningar.

      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);
              }
          }
      }
      
      

      Notera: Detta exempelprogram ställer in föräldrarna till de nya kulturerna till de gamla kulturerna. Föräldrarna till de gamla kulturerna kan inte vara de nya kulturerna samtidigt, eftersom denna situation skulle orsaka oändlig rekursion under resurssökningen.

    3. Öppna Arkiv-menyn och klicka på Spara som.

    4. Klicka på Mitt dokument i dialogrutan Spara som, skriv MakeCultures.cs i rutan Filnamn, klicka på Alla Files i rutan Filformat och klicka sedan på Spara.

    5. Stäng Anteckningar.

  2. Kör programmet som du skapade i steg 1 för att skapa en anpassad kultur. Gör följande:

    1. Klicka på Start, klicka på Kör, skriv cmd och klicka sedan på OK.
    2. Skriv cd "Mina dokument" och tryck sedan på RETUR
    3. Skriv %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs och tryck på RETUR.
    4. Skriv MakeCultures.exe för att köra programmet för att skapa kulturen.

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".