当我在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
是可配置的。
- 在Startup.cs#L132中,获取
AbpLocalizationHeaderRequestCultureProvider
并设置其HeaderName
:
// app.UseAbpRequestLocalization();
app.UseAbpRequestLocalization(options =>
{
var headerProvider = options.RequestCultureProviders.OfType<AbpLocalizationHeaderRequestCultureProvider>().First();
headerProvider.HeaderName = "AspNetCore-Culture";
});
- 在应用程序初始值设定项.ts#L122中,将
'.AspNetCore.Culture'
替换为'AspNetCore-Culture'
:
// '.AspNetCore.Culture': `c=${cookieLangValue}|uic=${cookieLangValue}`,
'AspNetCore-Culture': `c=${cookieLangValue}|uic=${cookieLangValue}`,
ABP 6.0以下
- 将带有补丁的
AbpLocalizationHeaderRequestCultureProvider
复制到您的项目中,作为MyLocalizationHeaderRequestCultureProvider
- 在Startup.cs#L132中,在设置
HeaderName
之后,将MyLocalizationHeaderRequestCultureProvider
的实例插入到RequestCultureProviders
中
// app.UseAbpRequestLocalization();
app.UseAbpRequestLocalization(options =>
{
var headerProvider = new MyLocalizationHeaderRequestCultureProvider();
headerProvider.HeaderName = "AspNetCore-Culture";
options.RequestCultureProviders.Insert(2, headerProvider);
});
- 在应用程序初始值设定项.ts#L122中,用
'AspNetCore-Culture'
替换'.AspNetCore.Culture'
可选
您可以关闭"忽略";无效";Nginx中的标头。