在安装了某一 .NET Framework 2.0 软件更新的订算机上运行应用程序或尝试访问网站时出现错误消息:“Culture name 'Culture' is not supported”

文章翻译 文章翻译
文章编号: 939949 - 查看本文应用于的产品
展开全部 | 关闭全部

症状

在安装了 Microsoft Windows Server 2003 的计算机上,安装下面 Microsoft 知识库文章中介绍的 Microsoft .NET Framework 2.0 软件更新:
928365 2007 年 7 月 10 日版用于 Windows Server 2003、Windows XP 和 Windows 2000 的 .NET Framework 2.0 安全更新说明
当您在该计算机上运行应用程序或尝试访问网站时,可能会收到以下错误消息:
[System.ArgumentException]:Culture name 'Culture' is not supported for the following 13 cultures: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
此外,如果某个应用程序具有使用旧的区域性名称格式的资源,而用户的区域性名称使用新的区域性名称格式,则该应用程序无法找到旧的区域性名称格式的资源。

原因

“症状”部分提到的软件更新是 .NET Framework 2.0. 的累积更新。此更新包括对区域性名称的更改。新的区域性名称遵循 IETF 标准(RFC 4646 和 RFC 4647)的语法。对区域性名称的更改确保了各个区域设置具有一致的标识符,从而提高了互操作性。

以下是旧区域性名称到新区域性名称的映射:
收起该表格展开该表格
旧区域性名称 新区域性名称
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

替代方法

要变通解决此问题,请根据使用旧区域性名称的新区域设置创建自定义区域性。为此,请按照下列步骤操作。

注意:您必须安装 .NET Framework 2.0 才能使用此处提供的示例程序。
  1. 创建可用于创建自定义区域性的应用程序。为此,请按照下列步骤操作:
    1. 单击“开始”,单击“运行”,键入 notepad,然后单击“确定”。
    2. 将下面的代码粘贴到记事本中。
      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);
              }
          }
      }
      
      注意:此示例程序将新区域性的父级设置为旧区域性。同时,旧区域性的父级不能作为新区域性,因为这可能会导致在资源查找过程中发生无限递归。
    3. 在“文件”菜单上,单击“另存为”。
    4. 在“另存为”对话框中单击“我的文档”,在“文件名”框中键入 MakeCultures.cs,单击“保存类型”框中的“所有文件”,然后单击“保存”。
    5. 退出记事本。
  2. 运行在步骤 1 创建的应用程序以创建自定义区域性。为此,请按照下列步骤操作:
    1. 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
    2. 键入“cd "My Documents"”,然后按 Enter
    3. 键入 %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r:sysglobl.dll MakeCultures.cs,然后按 Enter。
    4. 键入 MakeCultures.exe 以运行程序创建区域性。

状态

Microsoft 已经确认这是在“这篇文章中的信息适用于:”部分中列出的 Microsoft 产品中存在的问题。

属性

文章编号: 939949 - 最后修改: 2007年12月3日 - 修订: 1.1
这篇文章中的信息适用于:
  • Microsoft .NET Framework 2.0
关键字:?
kbbug kbfix kbsecvulnerability kbqfe kbsecurity kbsecbulletin kbpubtypekc kbexpertiseadvanced KB939949
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com