2017-08-15 291 views
0

我在创建使用翻译的新文化时遇到问题。目前我遇到的问题是,Windows不允许应用访问这个文化所在的文件夹。在我们的本地机器中,我们可以将Visual Studio作为管理员,然后我们对此没有任何问题,但是因为我们使用Azure部署了应用程序,所以我不知道如何允许访问有问题的文件夹,因此我们得到以下异常: System.Globalization.CultureNotFoundException:文化不受支持。参数名称:name en-US-biz是一个无效的文化标识符。System.Globalization.CultureNotFoundException:文化不受支持。参数名称:name en-US-biz是一个无效的文化标识符

异常的代码时,我们更新了用户语言的下一个部分:

var currentUserLanguage = 'en-US-biz'; 
    IocContainer.SetCurrentUserLanguage(currentUserLanguage); 

    var ci = domCultureLanguage != null ? domCultureLanguage.CultureInfo : new CultureInfo(currentUserLanguage); 

    Thread.CurrentThread.CurrentUICulture = ci; 
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); 

在矿井线:新的CultureInfo(currentUserLanguage)是我得到的异常。

我们注册的文化在Global.asax文件:

private void LoadCultureManager() 
{ 
    BizCultureEn.Register(); 
    BizCultureEs.Register(); 
} 

,我们已经建立2个不同的文化课+的rsex相应的文件。

BizCultureEn类如:

public static class BizCultureEn 
{ 
    //"es-ES-custom" need to match with Translations.es-ES-custom.resx 
    public static string CustomCultureName = "en-US-biz"; 
    public static CultureInfo CultureInfo { get; set; } 

    public static void Register() 
    { 
     // Create a custom culture for ru-US. 
     CultureAndRegionInfoBuilder builder = new CultureAndRegionInfoBuilder(CustomCultureName, CultureAndRegionModifiers.None); 
     CultureInfo = CultureInfo.CreateSpecificCulture(CustomCultureName); 
     builder.LoadDataFromCultureInfo(CultureInfo); 
     builder.CultureEnglishName = "Biz English (United States)"; 
     builder.CultureNativeName = "Biz English (United States)"; 

     builder.ThreeLetterISOLanguageName = "ben"; 
     builder.ThreeLetterWindowsLanguageName = "ben"; 
     builder.TwoLetterISOLanguageName = "bn"; 

     builder.RegionEnglishName = "Biz English"; 
     builder.ThreeLetterISORegionName = "USA"; 
     builder.ThreeLetterWindowsRegionName = "USA"; 
     builder.TwoLetterISORegionName = "US"; 

     // Register the culture. 
     try 
     { 
      builder.Register(); 
     } 
     catch (InvalidOperationException ex) 
     { 
      var ex1 = ex; 
      // Swallow the exception: the culture already is registered. 
     } 

     // Use the custom culture. 
     //CultureInfo = CultureInfo.CreateSpecificCulture(CustomCultureName); 
     Thread.CurrentThread.CurrentCulture = CultureInfo; 
     Thread.CurrentThread.CurrentUICulture = CultureInfo; 
    } 
} 

回答

0

您可以运行[system.Globalization.CultureInfo]::GetCultures('AllCultures')命令从Kudu访问 “调试控制台> PowerShell的” 检索所有文化。

此外,据我知道,当我们调用CultureAndRegionInfoBuilder.Register方法注册自定义文化,注册过程将创建一个.nlp文件和.nlp文件存储在%WINDIR%\全球化系统目录,这需要管理权限。如果我们在Azure Web应用上执行此操作,会导致访问权限相关问题。您可以尝试remote debug your web app以检查注册自定义文化时是否发生异常。

如果注册自定义文化在Azure Web App sandbox上无法正常工作,您可以尝试其他宿主选项(如虚拟机)。

+0

所以在localhost如果我在管理模式下执行visual studio我没有问题,我们不能从azure更改我们的应用程序,这不是一个选项现在.. – alecellis1985

相关问题