【问题标题】:AbpUserRequestCultureProvider returned the following unsupported culturesAbpUserRequestCultureProvider 返回了以下不受支持的文化
【发布时间】:2018-07-19 05:47:54
【问题描述】:

当我在 Angular ASP.NET 应用程序上检查日志时,我反复收到以下错误消息:

WARN 2018-07-19 05:43:09,596 [42 ] calization.RequestLocalizationMiddleware - AbpUserRequestCultureProvider returned the following unsupported cultures 'null'. WARN 2018-07-19 05:43:09,596 [42 ] calization.RequestLocalizationMiddleware - AbpUserRequestCultureProvider returned the following unsupported UI Cultures 'null'. WARN 2018-07-19 05:43:09,596 [42 ] calization.RequestLocalizationMiddleware - AbpLocalizationHeaderRequestCultureProvider returned the following unsupported cultures 'null'

有没有人有这方面的经验,或者是什么导致了这个问题?

任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net culture aspnetboilerplate


    【解决方案1】:

    这意味着 ABP 无法从请求的标头中获取用户的语言。 通常它会检查标题.AspNetCore.Culture,如果找不到则返回 null。 检查您的请求标头...

    下面是一个示例标题值;

    .AspNetCore.Culture=c=en|uic=en
    
    • c:文化
    • uic:Ui 文化

    【讨论】:

      【解决方案2】:

      我的标题失败了:.AspNetCore.Culture, 这适用于我的项目:标题:Accept-Language 值:“en-US”。

      【讨论】:

      • 嗨,Akira,看看我的回答。
      【解决方案3】:

      'null' 文化问题已在 Prevent null being saved into user's DefaultLanguage 中修复(ABP 4.9,2019 年 9 月)。


      另一个问题是Nginx as a reverse proxy will not pass headers that contain a period.

      在这种情况下,".AspNetCore.Culture" 标头。

      相关:Cannot get header that contains a period from NGINX 用于 "Abp.TenantId" 标头(ABP 4.4,2019 年 3 月)。

      ABP 6.0+

      AbpLocalizationHeaderRequestCultureProvider.HeaderName 是可配置的。

      1. Startup.cs#L132 中,获取AbpLocalizationHeaderRequestCultureProvider 并设置其HeaderName
      // app.UseAbpRequestLocalization();
         app.UseAbpRequestLocalization(options =>
         {
             var headerProvider = options.RequestCultureProviders.OfType<AbpLocalizationHeaderRequestCultureProvider>().First();
             headerProvider.HeaderName = "AspNetCore-Culture";
         });
      
      1. app-initializer.ts#L122 中,将'.AspNetCore.Culture' 替换为'AspNetCore-Culture'
      // '.AspNetCore.Culture': `c=${cookieLangValue}|uic=${cookieLangValue}`,
          'AspNetCore-Culture': `c=${cookieLangValue}|uic=${cookieLangValue}`,
      

      低于 ABP 6.0

      1. 将带有补丁的AbpLocalizationHeaderRequestCultureProviderMyLocalizationHeaderRequestCultureProvider复制到您的项目中。
      2. Startup.cs#L132 中,在设置HeaderName 后将MyLocalizationHeaderRequestCultureProvider 的实例插入RequestCultureProviders
      // app.UseAbpRequestLocalization();
         app.UseAbpRequestLocalization(options =>
         {
             var headerProvider = new MyLocalizationHeaderRequestCultureProvider();
             headerProvider.HeaderName = "AspNetCore-Culture";
             options.RequestCultureProviders.Insert(2, headerProvider);
         });
      
      1. app-initializer.ts#L122 中,将'.AspNetCore.Culture' 替换为'AspNetCore-Culture'

      另类

      你可以在 Nginx 中关闭ignore "invalid" headers

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多