无法确定Docker中重定向的https端口

jua*_*dez 5 linux windows docker asp.net-core-webapi

我正在尝试使用以下方法部署从80端口公开的asp.net核心webapi服务:

docker run --rm -p 80:80 --name radicadorrest -it radicadorrest
Run Code Online (Sandbox Code Playgroud)

错误:

警告:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [35]未配置XML加密器。密钥{e60978fd-16bc-4ff2-8525-39b5d0c36be5}可以以未加密形式持久存储。宿主环境:生产内容根目录路径:/ app现在正在监听:http:// [::]:80应用程序已启动。按Ctrl + C关闭。

警告:Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware [3]无法确定用于重定向的https端口。应用程序正在关闭...

我尝试使用其他端口,但收到相同的错误。

Docker版本:

客户端:版本:17.09.1-ce
API版本:1.32
Go版本:go1.8.3
Git commit:19e2cf6
内置:Thu Dec 7 22:25:13 2017
OS / Arch:linux / amd64

服务器:版本:17.09.1-ce
API版本:1.32(最低
版本1.12 )Go版本:go1.8.3
Git提交:19e2cf6
内置:Thu Dec 7 22:26:35 2017 OS / Arch:linux / amd64 Experiment:false

我也尝试在Windows上以相同的结果。

Shi*_*nva 13

这是因为当您创建 ASP.NET Core 项目时,您选择了“为 HTTPS 配置”选项。这会添加 HttpsRedirectionMiddleware 中间件,它为您的 Web 应用程序强制执行 SSL 连接。您创建的 docker 文件仅指定了 HTTP 端口。因此 HttpsRedirectionMiddleware 失败并关闭应用程序。基本上,如果您在创建项目时没有选择“为 HTTPS 配置”选项,您就可以了,或者确保 SSL 设置正确(端口和证书)。

  • 保留 HTTPS 重定向并使 Docker 能够在安全协议上工作不是更符合规范吗?还是获得奖励太复杂了? (5认同)

Dav*_*sar 7

这两个警告是完全无关的。

对于DataProtection警告,我建议您遵循ASP.Net Core官方文档中此处提供的指导。如果您想深入了解相关的源代码和决策,则可以查看此相关的ASP.Net GitHub PR

对于https重定向警告,我建议您仅从startup.cs通常通过定义的文件中删除https重定向策略,app.UseHttpsRedirection();除非您对容器实际使用了该策略,在这种情况下,您需要实际设置证书并公开HTTPS容器上的端口。