Fejlmeddelelse, når du kører et program eller forsøger at få adgang til et websted på en computer, hvor en bestemt .NET Framework 2.0-softwareopdatering er installeret: "Kulturnavnet 'Kultur' understøttes ikke"

Symptomer

På en computer med Microsoft Windows Server 2003 installeret skal du installere softwareopdateringen til Microsoft .NET Framework 2.0, som er beskrevet i følgende artikel i Microsoft Knowledge Base:

928365 Beskrivelse af sikkerhedsopdateringen til .NET Framework 2.0 til Windows Server 2003, Windows XP og Windows 2000: 10. juli 2007

 Når du kører et program eller forsøger at få adgang til et websted på computeren, vises muligvis følgende fejlmeddelelse:

Bemærk

[System.ArgumentException] : Kulturnavnet 'Kultur' understøttes ikke for følgende 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

Hvis et program har ressourcer, der bruger det gamle kulturnavneformat, og hvis brugerens kulturnavn bruger det nye kulturnavneformat, kan programmet desuden ikke finde ressourcer til det gamle kulturnavneformat.

Årsag

Den softwareopdatering, der er nævnt i afsnittet "Symptomer", er en samlet opdatering til .NET Framework 2.0. Denne opdatering indeholder ændringer af kulturnavnene. De nye kulturnavne følger syntaksen i IETF-standarderne (RFC 4646 og RFC 4647). Ændringerne i kulturnavnene forbedrer interoperabiliteten ved at sikre, at hver landestandard har en ensartet identifikator.

Tilknytningen af de gamle kulturnavne til de nye kulturnavne er som følger:

Navn på gammel kultur Nyt kulturnavn
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
da-CB da-029

Løsning

Du kan løse dette problem ved at oprette brugerdefinerede kulturer fra de nye landestandarder, der anvender de gamle kulturnavne. Det kan du gøre ved at følge disse trin.

Bemærk! Du skal have .NET Framework 2.0 installeret for at bruge det eksempelprogram, der er angivet her.

  1. Oprette et program, der kan bruges til at opbygge en brugerdefineret kultur. Det kan du gøre ved at udføre disse trin:

    1. Klik på Start, klik på Kør, skriv notesblok, og klik derefter på OK.

    2. Indsæt følgende kode i Notesblok.

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

      Bemærk! Dette eksempelprogram indstiller forældrene til de nye kulturer til de gamle kulturer. Forældrene til de gamle kulturer kan ikke være de nye kulturer på samme tid, fordi denne situation ville forårsage uendelig rekursion under ressourceopslag.

    3. Klik på Gem som i menuen Filer.

    4. Klik på Mit dokument i dialogboksen Gem som, skriv MakeCultures.cs i feltet Filnavn, klik på Alle Files i feltet Filtype, og klik derefter på Gem.

    5. Afslut Notepad.

  2. Kør det program, du oprettede i trin 1, for at opbygge en brugerdefineret kultur. Det kan du gøre ved at udføre disse trin:

    1. Klik på Start, klik på Kør, skriv cmd, og klik derefter på OK.
    2. Skriv cd "My Documents", og tryk derefter på ENTER
    3. Skriv %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs, og tryk derefter på ENTER.
    4. Skriv MakeCultures.exe for at køre programmet for at opbygge kulturen.

Status

Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".