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

.NET 6 Web API中IStringLocalizer无法读取资源文件问题求助

.NET 6 Web API 本地化资源无法加载问题

已完成的配置

1. Startup.cs 配置

services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddControllersWithViews()
        .AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder)
        .AddDataAnnotationsLocalization();
services.Configure<RequestLocalizationOptions>(options => {
    var supportedCultures = new[] { "fr-BE", "nl-BE" };
    options.SetDefaultCulture(supportedCultures[0])
        .AddSupportedCultures(supportedCultures)
        .AddSupportedUICultures(supportedCultures);
});

2. 资源文件结构

资源文件存放于Resources\Controllers\目录下:

  • MyController.fr-BE.resx:键Article对应值Article FR
  • MyController.nl-BE.resx:键Article对应值Article NL

3. 控制器代码

private readonly IStringLocalizer<MyController> _localizer;

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

public ActionResult Get()
{
    var article = _localizer["Article"];
    return Ok();
}

问题现象

调用接口时,article变量显示资源未找到:

Name = "Article"
ResourceNotFound = true
article.SearchedLocation = API.Resources.Controllers.MyController
Value = "Article"

请求已通过Postman携带Accept-Language = fr-BE头。

缺失的配置与修复步骤

  • 添加请求本地化中间件
    在Startup.cs的Configure方法中,必须将请求本地化中间件加入管道,放在UseRouting之后、UseAuthorization之前:

    app.UseRouting();
    // 新增该行代码
    app.UseRequestLocalization();
    app.UseAuthorization();
    app.MapControllers();
    

    这是核心缺失步骤,没有它系统不会解析请求头的语言信息,无法切换对应本地化文化。

  • 替换AddControllersWithViews为AddControllers
    Web API不需要视图本地化功能,修改服务注册代码:

    services.AddControllers()
            .AddDataAnnotationsLocalization();
    
  • 检查资源文件属性
    右键资源文件→属性:

    • 设置复制到输出目录为如果较新则复制或始终复制
    • 确认自定义工具为ResXFileCodeGenerator,确保资源类能正确生成
  • 验证资源文件命名空间
    资源文件生成的类命名空间需与SearchedLocation(API.Resources.Controllers)一致,若不一致,可修改资源文件的自定义工具命名空间属性,或调整资源文件目录结构匹配控制器命名空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:10:21