.Net Core Web API部署AWS成功后访问URL返回404错误如何解决
排查解决步骤
1. 优先验证Swagger访问逻辑
你本地launchsettings.json配置的默认启动路径是swagger,且环境变量为Development。ASP.NET Core默认仅在Development环境下启用Swagger中间件,部署到Elastic Beanstalk默认环境为Production,直接访问根域名会返回404:
- 先尝试访问
{你的部署域名}/swagger,确认是否能打开接口文档页 - 如需生产环境开启Swagger,修改
Program.cs/Startup.cs中Swagger的启用条件,去掉环境判断,或者在Elastic Beanstalk的环境变量中添加ASPNETCORE_ENVIRONMENT = Development
2. 修正端口匹配配置
你的Kestrel配置监听端口为5001,但Elastic Beanstalk默认反向代理规则:
- Windows IIS宿主默认转发到80端口
- Linux宿主默认转发到5000端口
端口不匹配会导致请求无法转发到ASP.NET Core服务,两种修正方案: - 方案一:修改
launchsettings.json中Kestrel的监听端口为5000
"Kestrel": { "Endpoints": { "Http": { "Url": "http://+:5000" } } }
- 方案二:在Elastic Beanstalk配置中修改反向代理转发端口为5001
3. 确认部署包配置正确
你是多项目解决方案仅部署API项目,需要确认:
- 发布时选择的启动项目为
Matrimony.Api,发布产物包含Matrimony.Api.dll - Linux环境部署需要在发布根目录添加
Procfile文件,内容为:
web: dotnet Matrimony.Api.dll
- Windows环境部署需要确认
web.config中processPath指向的dotnet命令和dll路径正确
4. 路由规则验证
如果你的API接口加了全局路由前缀(比如[Route("api/[controller]")]),直接访问根域名也会返回404,需要拼接对应的接口路径访问。
内容的提问来源于stack exchange,提问作者Rakesh Ravi G
相关产品推荐
相关产品推荐

