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

如何阻止ASP.NET Core移除URL中的"/en/"后缀?

问题分析与解决方案

问题现象

  • 基于.NET Core 3.1创建的ASP.NET Core Razor Pages项目,使用Kestrel托管,访问https://localhost:5001正常。
  • 输入https://localhost:5001/en/回车后,页面重载时/en/会被自动移除,跳回根路径;但/ja/、/hk/等其他语言后缀可正常保留。
  • 计划通过中间件从HttpContext.Request.Path捕获/en/做处理,但因路径被修改无法实现。
  • 该问题可复现:新建同类型项目,使用Kestrel而非IIS Express,添加/en/后缀即可触发。

排查更新

后续排查确认问题与.NET Core 3.1无关:

  • 在Visual Studio 2022调试时,使用Microsoft Edge隐私模式首次访问https://localhost:5001/en/,/en/不会被移除;但后续再次请求时,后缀仍会被移除。
  • 推测问题可能与浏览器行为、VS调试会话或系统本地化设置相关。

可能的解决思路

1. 清除浏览器缓存与跨浏览器测试

浏览器可能缓存了/en/路径的跳转记录,或因系统默认语言触发自动重定向:

  • 彻底清除当前浏览器的缓存、Cookie及站点数据,再重新测试。
  • 切换到Chrome、Firefox等其他浏览器测试,排除Edge特定行为影响。

2. 检查本地化中间件配置

即使排查认为与.NET Core版本无关,仍需确认是否启用了本地化中间件导致默认文化重定向:

  • 打开Startup.cs(.NET Core 3.1),检查是否配置了AddLocalization和UseRequestLocalization。如果默认文化设置为en,框架会自动将/en/重定向到根路径(默认文化无需在URL中保留)。
  • 修改配置禁用默认文化重定向:
    services.Configure<RequestLocalizationOptions>(options =>
    {
        var supportedCultures = new[] { "en", "ja", "hk" };
        options.SetDefaultCulture("en")
               .AddSupportedCultures(supportedCultures)
               .AddSupportedUICultures(supportedCultures)
               .RedirectToDefaultCulture = false; // 关闭默认文化的自动重定向
    });
    

3. 清理VS调试环境

VS调试会话可能残留进程或缓存数据,导致路径处理异常:

  • 停止调试,删除项目的bin和obj目录,重启VS后重新启动调试。
  • 修改launchSettings.json中的applicationUrl,更换Kestrel监听端口后测试。

4. 排查系统本地化设置

系统默认语言为英文时,可能触发某些隐式跳转逻辑:

  • 临时将系统默认语言修改为非英文(如中文),再测试/en/路径是否仍被移除。

内容的提问来源于stack exchange,提问作者zm-danik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:30:55