Asp.net Core部署CloudRun报https端口重定向错误的原因排查
CloudRun跨项目部署.NET 5应用HTTPS端口检测失败的常见配置差异原因
该错误由ASP.NET Core自带的HTTPS重定向中间件触发,核心原因是应用无法从运行环境中获取到正确的HTTPS端口配置,两个项目的CloudRun配置差异主要集中在以下几个方向:
- HTTPS强制跳转配置差异
CloudRun支持通过--require-https参数开启全局HTTP到HTTPS的强制跳转,如果project2的服务开启了该配置,而你的.NET 5应用没有配置Forwarded Headers中间件处理CloudRun反向代理传递的X-Forwarded-Proto、X-Forwarded-Port请求头,重定向中间件就无法识别代理层的HTTPS配置,触发报错。如果project1未开启该配置,应用不会触发HTTPS重定向逻辑,自然不会暴露该问题。 - HTTP协议版本配置差异
如果project2的服务开启了--use-http2参数强制使用HTTP/2端到端传输,而你的.NET 5应用没有额外配置Kestrel适配HTTP/2的监听规则,也会导致端口检测逻辑失效。 - 环境变量配置差异
CloudRun服务支持保存持久化环境变量配置,若你之前在project1的服务中额外配置了ASPNETCORE_HTTPS_PORT、ASPNETCORE_URLS这类.NET运行时相关的环境变量,而在project2部署时没有同步配置,仅传递了ProjectId变量,就会导致应用缺失必要的端口配置。 - 容器端口映射配置差异
若project2的部署命令中额外指定了--port参数,设置的端口和镜像内Kestrel默认监听的$PORT环境变量端口不一致,也会导致重定向逻辑无法匹配到正确的端口。
内容的提问来源于stack exchange,提问作者רבקה פ
相关产品推荐
相关产品推荐

