请求https://localhost:44328/Products时ProductsController返回404错误求助
问题原因及排查解决步骤
1. 首要问题:视图文件后缀错误
你当前的Index视图命名为Index.html,ASP.NET Core MVC默认查找的Razor视图后缀为.cshtml,框架找不到匹配的视图文件时会触发404错误。
直接修复方案:将Views/Products/Index.html重命名为Views/Products/Index.cshtml,重启项目后重试访问。
2. 路由配置排查
- 检查Program.cs(.NET 6+)或Startup.cs(.NET 5及更早版本)中的路由配置,确保存在默认路由规则:
// 示例默认路由配置 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
- 确认ProductsController没有添加
[ApiController]特性,该特性会将控制器标记为API接口控制器,不会走视图查找逻辑。 - 如果你使用特性路由,确认Controller或Action上的
[Route]特性配置和访问路径匹配,示例正确配置:
[Route("Products")] public class ProductsController : Controller { [HttpGet] public async Task<IActionResult> Index(int p =1) { // 逻辑代码 } }
3. 服务注册与中间件顺序排查
- 确认服务注册阶段已添加控制器视图服务:
builder.Services.AddControllersWithViews();
- 确认中间件顺序正确,
app.UseStaticFiles()要放在路由匹配、控制器映射之前,错误的顺序会导致请求先被静态文件中间件拦截,找不到静态文件时不会转发到控制器处理。
4. 路径测试验证
尝试访问https://localhost:44328/Products/Index,如果该路径可正常访问,说明默认路由的默认Action配置存在问题,调整默认路由的默认Action为Index即可。
内容的提问来源于stack exchange,提问作者djxenon
相关产品推荐
相关产品推荐

