创建.Net Core 3.1 MVC项目后页面无法加载,提示localhost找不到如何解决?
.NET Core MVC 3.1 本地访问404问题排查方案
1. 启动配置与端口校验
- 检查项目
Properties目录下的launchSettings.json文件,确认iisSettings节点的applicationUrl、以及profiles下你使用的启动项(IIS Express/自托管)对应的applicationUrl,和浏览器访问的地址端口完全一致 - 若使用IIS Express启动,可查看VS右下角IIS Express托盘图标内的站点端口信息,若出现端口被占用的情况,启动时会自动切换端口,会导致你输入的原地址404
2. 中间件顺序与路由配置校验
打开Startup.cs的Configure方法,确认中间件配置顺序符合规范,错误的顺序会直接导致路由匹配失效,正确配置参考如下:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { // 必须配置默认路由,否则无特性路由的Controller无法命中 endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }
- 重点检查:
UseStaticFiles必须放在UseRouting之前,UseEndpoints必须放在UseRouting之后,默认路由规则不能遗漏
3. 控制器与视图资源校验
- 控制器类必须继承自
Controller基类,且类名以Controller为后缀,例如默认首页对应的是HomeController.cs - 对应Action方法不能标记
[NonAction]特性,若没有特殊配置,不要给默认访问的Action加[HttpPost]等限制请求方法的特性,否则GET请求访问会直接返回404 - 视图文件路径必须符合约定:
Views/[控制器名去掉Controller后缀]/[Action名].cshtml,比如HomeController的Index方法对应视图路径为Views/Home/Index.cshtml,同时确认视图文件属性中的「复制到输出目录」设置为「如果较新则复制」
4. 特性路由冲突校验
- 若你在控制器或Action上添加了
[Route]特性,会覆盖默认全局路由规则,比如控制器上标记了[Route("Test/[controller]")],则原默认路径/Home/Index会失效,必须访问/Test/Home/Index才能命中 - 避免多个特性路由使用重复模板,会导致路由匹配冲突
5. 运行日志校验
- 先清理解决方案并重新生成,确认无编译错误、所有NuGet包都已正常还原
- 启动项目后,查看VS「输出」窗口,输出源选择「ASP.NET Core Web 服务器」,排查是否有启动报错,例如端口占用、配置文件读取失败、依赖缺失等问题,部分启动失败场景下浏览器也会返回404报错
内容的提问来源于stack exchange,提问作者Argen Tina
相关产品推荐
相关产品推荐

