You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 7.0 MVC本地化配置失效,请求排查解决

ASP.NET Core 7.0 MVC 本地化返回键名而非值的排查方案

1. 资源文件配置验证

  • 检查资源文件生成操作:右键资源文件 → 属性,确保生成操作设置为Embedded resource,未设置的话资源无法被程序集读取。
  • 确认资源文件命名与控制器命名空间匹配:若HomeController的命名空间是YourProject.Controllers,资源文件前缀需对应为YourProject.Controllers.HomeController(而非仅Controllers.HomeController),否则无法匹配到对应资源。

2. IStringLocalizer注入正确性

控制器中必须注入带泛型参数的IStringLocalizer<HomeController>,而非无泛型的IStringLocalizer,示例代码:

private readonly IStringLocalizer<HomeController> _localizer;

public HomeController(IStringLocalizer<HomeController> localizer)
{
    _localizer = localizer;
}

泛型参数需与当前控制器类型完全一致,才能正确关联对应的资源文件。

3. 中间件顺序检查

app.UseRequestLocalization必须放在路由中间件之前,正确的中间件顺序示例:

app.UseRequestLocalization(app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

若中间件顺序颠倒,请求文化信息无法被正确识别,导致本地化失效。

4. 请求文化传递验证

默认情况下,ASP.NET Core通过查询参数culture和ui-culture识别请求文化,可通过访问/?culture=bg-BG&ui-culture=bg-BG测试是否生效。同时可在控制器中添加调试代码,确认当前文化:

var currentUICulture = CultureInfo.CurrentUICulture.Name;

若输出不是配置的en-US或bg-BG,说明请求文化未被正确设置,需检查RequestLocalizationOptions的配置是否正确生效。

5. ResourcesPath路径验证

确认Resources文件夹位于项目根目录,且名称大小写完全匹配(如不要写成resources)。若文件夹在子目录下,需调整ResourcesPath配置,例如opts => opts.ResourcesPath = "SubFolder/Resources"。


内容的提问来源于stack exchange,提问作者Lucho Gizdov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:01:18