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

.NET Core API语言资源无法正常工作问题求助

.NET Core API本地化失效的排查与修复

针对你提供的配置,以下是核心问题及对应的修复方案:

1. 本地化器注入类型错误

控制器中注入了IStringLocalizer<ResourcesController>,但项目中不存在ResourcesController类,且你的资源文件基于SharedResource定义,两者不匹配。

修复后控制器代码:

public class TestController : ControllerBase
{
    private readonly IStringLocalizer<SharedResource> _localizer;

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

    [HttpGet("TestCulture")]
    public IActionResult TestCulture()
    {
        var testMsg = _localizer["NotFound"];
        return Ok(testMsg);
    }
}

2. 资源文件命名与结构不匹配

资源文件命名为SharedResources.en-US.resx(多了一个s),但对应的类是SharedResource.cs,两者名称必须严格一致(含大小写)。同时需确保SharedResource.cs的命名空间与项目根命名空间一致。

修复步骤:

  • 将资源文件重命名为:SharedResource.en-US.resx、SharedResource.zh-CN.resx
  • 修正SharedResource.cs的命名空间(示例项目名为MyProject):
namespace MyProject.Resources.Shared;
public class SharedResource { }

3. 请求本地化中间件位置错误

UseRequestLocalization必须放在UseHttpsRedirection、UseAuthorization等中间件之前,确保请求文化先被解析生效。

修复后Program.cs代码片段:

var app = builder.Build();

// 优先启用请求本地化
var localizationOptions = app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value;
localizationOptions.FallBackToParentCultures = true;
localizationOptions.FallBackToParentUICultures = true;
app.UseRequestLocalization(localizationOptions);

// 再启用其他中间件
app.UseHttpsRedirection();
app.UseAuthorization();

app.MapControllers();

4. 资源文件属性配置错误

确保所有.resx文件的属性设置正确:

  • 生成操作:设置为嵌入的资源
  • 自定义工具:设置为ResXFileCodeGenerator
  • 自定义工具命名空间:与SharedResource.cs的命名空间保持一致

5. 验证请求文化传递方式

测试时需明确指定请求文化,常用方式:

  • 通过Accept-Language请求头:例如Accept-Language: zh-CN或Accept-Language: en-US
  • 通过查询参数:/TestCulture?culture=zh-CN

额外检查点

  • 确认SharedResource.cs是无成员的空类
  • 验证.resx文件中存在NotFound键,且对应语言的内容正确
  • 清理项目并重新生成,避免缓存干扰

内容的提问来源于stack exchange,提问作者Gary Lau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:35:12