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

ASP.NET Core路由配置异常:修改默认路由后出现404错误求助

排查ASP.NET Core MVC默认路由修改后404的问题

嘿,这个问题我帮不少开发者排查过,改完默认路由后出现404,大概率是这几个环节没跟上:

  • 确认Account控制器存在且正确定义:你得确保项目里有一个名为AccountController的类,而且它继承自Controller基类,比如:

    public class AccountController : Controller
    {
        // 你的动作方法
    }
    

    注意控制器名称要严格匹配路由里的“Account”,虽然Windows系统大小写不敏感,但部署到Linux环境时会因为大小写不匹配触发404,尽量保持一致。

  • 检查Account控制器中是否有公开的Login动作方法:Login方法必须是public访问修饰符,不能是private或protected,示例如下:

    public IActionResult Login()
    {
        return View();
    }
    

    方法名称也要完全匹配“Login”,别写成LogIn或者小写的login,MVC路由是区分大小写的(取决于宿主环境配置,但严格匹配更稳妥)。

  • 确认Login视图文件存在:默认情况下,MVC会自动查找Views/Account/Login.cshtml路径下的视图文件,如果这个文件缺失,即使控制器和方法都正确,也会返回404。如果视图放在自定义路径下,需要在动作方法里手动指定视图路径,比如:

    return View("~/Views/CustomViews/Login.cshtml");
    
  • 检查中间件顺序是否正确:app.UseMvc()(或者ASP.NET Core 3.0+的app.UseEndpoints)的位置很关键,它需要放在app.UseStaticFiles()之后,并且不能被其他中间件提前拦截请求。比如如果有自定义的授权中间件或请求拦截中间件,要确保它们的顺序不会让请求还没到达MVC路由就被处理了。

  • 适配ASP.NET Core 3.0+的端点路由:如果你的项目是ASP.NET Core 3.0及以上版本,推荐使用端点路由替代旧的UseMvc方式,配置示例如下:

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Account}/{action=Login}/{id?}");
    });
    

    混用旧路由系统和新端点路由可能导致路由匹配异常,尽量统一使用一种方式。

内容的提问来源于stack exchange,提问作者Dr.php

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:37:03