ASP.NET Core 部署到CentOS下,语言资源只能加载默认的语言资源文件

SX_xiaoxia SX_xiaoxia 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
版本:.net Core 2.1
在ASP.NET Core中做多语言网站,在windows不管是通过IIS部署,还是通过dotnet启动,语言切换都正常,可以要找要求加载不同的语言包,但是发布到Cent OS 7.5中,语言资源只加载默认的语言包.
我的具体实现方式如下:
在路由中添加本次要请求语言

routes.MapRoute(
name: "UploadMvc",
template: "UploadMvc/{action}/{id?}",
defaults: new { controller = "UploadMvc", action = "UpdataFile" }
);

routes.MapRoute(
name: "default",
template: "{lang}/{controller}/{action}/{id?}",
defaults: new { lang = "zh-CN", controller = "Home", action = "Index" },
constraints: new { lang = "zh-cn|en-us|de-de|ko-kr|es-es|ja-jp" }
);

在Controller中获取到当前要使用的语言,并保存到ViewData中.

public override void OnActionExecuting(ActionExecutingContext context)
{
var routeData = context.RouteData;
var lang = "zh-cn";
if (routeData != null && routeData.Values != null)
{
var langObj = routeData.Values["lang"];
if (langObj != null)
{
lang = langObj.ToString().ToLower();
}
}
Language = lang;
ViewData["language"] = lang;
}

设置当前区域,如果链接传入 zh-cn 当前区域就设置为中国

Thread.CurrentThread.CurrentUICulture = new CultureInfo(ViewData["language"] as string);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ViewData["language"] as string);

语言资源包

然后再程序中使用

Language.Index_IMPLANT

获取响应的语言设置,Index_IMPLANT是资源文件的名称.

这种方式再windows下部署一切正常,但是在CentOS下部署,就只能加载默认的语言,也就是Language中的语言,不能根据设置的区域加载不同的语言了.

经过测试:经URL传入的语言能正常获取,CurrentUICulture和CurrentCulture 也能正常设置,区域也正确,就是找不到语言包.

发布后的目录




求教.
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
SX_xiaoxia
.NET社区 62,271 成员 668,968 内容