AbpUserRequestCultureProvider返回了以下不受支持的区域性



当我在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'

有人对此有任何经验吗?或者是什么原因导致了这个问题?

如有任何帮助,我们将不胜感激。

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

示例标头值如下;

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

我的头失败了:.AspNetCore.Culture,这一个适用于我的项目:头:Accept-Language值:";en US";。

'null'区域性问题在防止null保存到用户的DefaultLanguage中得到修复(ABP 4.92019年9月(。


另一个问题是,作为反向代理的Nginx不会传递包含句点的头。

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

相关:无法从NGINX为"Abp.TenantId"标头获取包含句点的标头(ABP 4.42019年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. 在应用程序初始值设定项.ts#L122中,将'.AspNetCore.Culture'替换为'AspNetCore-Culture'
// '.AspNetCore.Culture': `c=${cookieLangValue}|uic=${cookieLangValue}`,
'AspNetCore-Culture': `c=${cookieLangValue}|uic=${cookieLangValue}`,

ABP 6.0以下

  1. 将带有补丁的AbpLocalizationHeaderRequestCultureProvider复制到您的项目中,作为MyLocalizationHeaderRequestCultureProvider
  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. 在应用程序初始值设定项.ts#L122中,用'AspNetCore-Culture'替换'.AspNetCore.Culture'

可选

您可以关闭"忽略";无效";Nginx中的标头。

最新更新