.NET+Angular模板API控制器路由失效(404)求助
问题分析与解决方案
你的自定义TestController使用了属性路由([Route("[controller]")]),但当前Program.cs中缺少了属性路由的匹配配置,导致请求无法映射到控制器。自带的WeatherForecastController能正常工作是因为模板默认隐含了相关配置,而复制后失效也验证了路由配置是核心问题。
修复步骤
修改Program.cs,在UseRouting()之后添加app.MapControllers()——这个方法专门用于识别带有[ApiController]和属性路由的控制器:
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); // 新增该行:启用属性路由的API控制器匹配 app.MapControllers(); app.MapControllerRoute( name: "default", pattern: "{controller}/{action=Index}/{id?}"); app.MapFallbackToFile("index.html"); app.Run();
原理说明
MapControllers()会扫描所有标记了[ApiController]的控制器,根据它们的[Route]、[HttpGet]等属性匹配请求,是属性路由生效的必要步骤。- 原代码中的
MapControllerRoute是针对MVC视图控制器的约定路由,无法处理属性路由定义的API请求。
内容的提问来源于stack exchange,提问作者Smeets
相关产品推荐
相关产品推荐

