.NET 6 Angular项目自定义控制器HTTPS请求返回404问题
解决.NET 6集成Angular项目中自定义控制器HTTPS请求404的问题
以下是针对问题的排查和解决步骤:
1. 补充API属性路由的映射配置
你的Program.cs中使用了AddControllersWithViews()和MapControllerRoute,但带有[ApiController]和[Route]属性的控制器需要明确调用MapControllers()才能确保属性路由被正确识别。修改Program.cs:
public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // 保留AddControllersWithViews以支持MVC视图,同时添加AddControllers支持API控制器 builder.Services .AddControllersWithViews() .AddControllers(); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.MapControllerRoute( name: "default", pattern: "{controller}/{action=Index}/{id?}" ); // 新增该行,确保属性路由的API控制器被正确映射 app.MapControllers(); app.MapFallbackToFile("index.html"); app.Run(); } }
2. 检查launchSettings.json的HTTPS配置
打开项目根目录下的Properties/launchSettings.json,确认HTTPS的applicationUrl配置正确,示例配置:
"profiles": { "TestWebsite": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
确保访问自定义控制器时使用的HTTPS端口和配置一致,比如https://localhost:5001/Other。
3. 清除浏览器HSTS缓存
由于项目启用了HSTS,浏览器可能缓存了错误的路由跳转规则,导致HTTPS请求被强制导向Angular的index.html。以Chrome为例:
- 地址栏输入
chrome://net-internals/#hsts - 在「Delete domain security policies」区域输入
localhost,点击删除
4. 重置开发HTTPS证书
如果自签名HTTPS证书存在异常,可能导致请求路由异常:
- 打开命令行,进入项目根目录
- 执行命令清理旧证书:
dotnet dev-certs https --clean - 重新生成并信任证书:
dotnet dev-certs https --trust
内容的提问来源于stack exchange,提问作者QTom
相关产品推荐
相关产品推荐

