Hibaüzenet jelenik meg, ha olyan számítógépen futtat alkalmazást vagy próbál meg webhelyet elérni, amelyen egy adott .NET-keretrendszer 2.0-szoftverfrissítés telepítve van: „A 'Terület/nyelv' területi/nyelvi azonosító nem támogatott”

A jelenség

Egy Microsoft Windows Server 2003 rendszert működtető számítógépen telepíti a Microsoft .NET-keretrendszer 2.0 szoftverfrissítését, amelyet a Tudásbázis alábbi cikke ismertet:
928365 Beskrivelse af sikkerhedsopdateringen til .NET Framework 2.0 til Windows Server 2003, Windows XP og Windows 2000: 10. juli 2007
Ha a számítógépen alkalmazást futtat vagy webhelyet próbál meg elérni, az alábbi hibaüzenet jelenhet meg:
[System.ArgumentException] : A 'Terület/nyelv' területi/nyelvi azonosító nem támogatott a következő 13 terület/nyelv esetében: 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
Továbbá ha egy alkalmazás olyan erőforásokkal rendelkezik, amelyek a területi/nyelvi azonosítók régi formátumát használják, a felhasználó területi/nyelvi azonosítói pedig az új formátumot, a régi formátumú területi/nyelvi azonosítókat használó erőforrások nem lesznek elérhetők az alkalmazás számára.

Oka

„A jelenség” című szakaszban ismertetett szoftverfrissítés a .NET-keretrendszer 2.0 összegző frissítése. Ez a frissítés a területi/nyelvi azonosítók módosításait tartalmazza. A területi/nyelvi azonosítók új elnevezése az IETF-szabványok szintaxisát követi (RFC 4646 és RFC 4647). A módosítások a területi azonosítók egységesítésével az együttműködőképesség javítását célozzák.

Az új és a régi területi/nyelvi azonosítók megfeleltetése:
Régi területi/nyelvi azonosítóÚj területi/nyelvi azonosító
az-AZ-Latnaz-Latn-AZ
uz-UZ-Latnuz-Latn-UZ
sr-SP-Latnsr-Latn-CS
az-AZ-Cyrlaz-Cyrl-AZ
uz-UZ-Cyrluz-Cyrl-UZ
sr-SP-Cyrlsr-Cyrl-CS
bs-BA-Cyrlbs-Cyrl-BA
sr-BA-Latnsr-Latn-BA
sr-BA-Cyrlsr-Cyrl-BA
bs-BA-Latnbs-Latn-BA
iu-CA-Latniu-Latn-CA
div-MVdv-MV
en-CBen-029

Kerülő megoldás

A probléma megkerüléséhez hozzon létre egyéni területi/nyelvi azonosítókat a régi területi/nyelvi azonosítókat használó új területi/nyelvi azonosítókból. Ehhez hajtsa végre az alábbi lépéseket.

Megjegyzés: Az itt szereplő mintaprogram használatához telepítve kell lennie a .NET-keretrendszer 2.0-s verziójának.
  1. Hozzon létre egy olyan alkalmazást, amellyel elkészítheti az egyéni területi/nyelvi azonosítót. Ehhez hajtsa végre az alábbi lépéseket:
    1. Kattintson a Start menü Futtatás parancsára, írja be a notepad parancsot, majd kattintson az OK gombra.
    2. Az alábbi programkódot másolja be a Jegyzettömbbe:
      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);
      }
      }
      }
      Megjegyzés: Ez a mintaprogram az új területi/nyelvi azonosítók szülőit beállítja a régi területi/nyelvi azonosítókra. A régi területi/nyelvi azonosítók szülői egyidejúleg nem lehetnek új területi/nyelvi azonosítók is, mivel ez végtelen rekurziót eredményezne az erőforrás-keresés során.

    3. Kattintson a Fájl menü Mentés másként parancsára.
    4. A Mentés másként párbeszédpanelen kattintson a Dokumentumok gombra, írja be a MakeCultures.cs fájlnevet a Fájlnév mezőbe, kattintson a Minden fájl elemre a Fájl típusa legördülő listában, majd kattintson a Mentés gombra.
    5. Zárja be a Jegyzettömb alkalmazást.
  2. Az egyéni területi/nyelvi azonosító elkészítéséhez futtassa az 1. lépésben létrehozott alkalmazást. Ehhez hajtsa végre az alábbi lépéseket:
    1. Kattintson a Start menü Futtatás parancsára, írja be a cmd parancsot, majd kattintson az OK gombra.
    2. Írja be a cd Dokumentumok parancsot, majd nyomja le az ENTER billentyűt.
    3. Írja be a %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs parancsot, majd nyomja le az ENTER billentyűt.
    4. Írja be a MakeCultures.exe parancsot a területi/nyelvi azonosítót létrehozó program futtatásához.

Állapot

A Microsoft megerősítette, hogy a cikkben tárgyalt jelenség az érintett termékek hibájára vezethető vissza.
Tulajdonságok

Cikkazonosító: 939949 - Utolsó ellenőrzés: 2007. dec. 3. - Verziószám: 1

Visszajelzés