从Visual Studio部署Azure Container App时出现404错误
解决Azure Container App部署ASP.NET Web API后404的问题
以下是具体排查和解决方向:
1. 核对容器端口映射
- 登录Azure Portal,打开你的Container App,进入「容器」配置页面
- 确认容器的「端口」设置和Web API监听端口一致:ASP.NET默认监听80或5000,如果你在
Program.cs里自定义了端口(比如builder.WebHost.UseUrls("http://*:5000")),这里必须填对应端口 - 端口不匹配会导致流量无法正确转发到容器内应用,直接返回404
2. 检查Ingress路由配置
- 进入「路由」配置页:
- 确认「目标端口」和容器端口完全一致
- 检查路由规则的路径:如果API有前缀(比如
api/),要把路由路径设为api/*;如果根路径就是API入口,留空即可 - 再次确认「外部访问」已开启(你提到已启用,建议再核对)
3. 关于"internal属性"的正确设置
你提到的"internal属性设为false",实际对应Ingress的「仅限内部」开关:
- 在「路由」页面的「访问限制」区域,找到「仅限内部」选项,取消勾选(即对应internal=false)
- 这个选项如果开启,容器App只会允许VNet内部访问,外部请求自然返回404
4. 查看容器启动日志
- 进入「日志」页面,查看容器启动日志:
- 确认日志里出现类似
Now listening on: http://[::]:80的内容,说明Web API已正确绑定所有IP的端口 - 如果日志显示绑定的是
localhost,说明应用只允许容器内部访问,需要修改Program.cs里的监听配置,改为http://*:端口号
- 确认日志里出现类似
5. 验证API路由和访问URL
- 检查控制器的路由属性,比如是否有
[Route("api/[controller]")],且方法上有[HttpGet]等HTTP动词特性 - 访问时要使用正确的URL:比如控制器是
WeatherForecast,则访问路径应为https://<你的容器App域名>/api/WeatherForecast,直接访问根路径/会返回404(除非你有根路径的API接口)
内容的提问来源于stack exchange,提问作者Matteo Beretta
相关产品推荐
相关产品推荐

