我正在尝试使用以下方法部署从80端口公开的asp.net核心webapi服务:
docker run --rm -p 80:80 --name radicadorrest -it radicadorrest
错误:
警告: 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提交:19e2cf6
建成时间:2017年12月7日星期四22:25:13
操作系统/存档:linux / amd64服务器:版本:17.09.1-ce
API版本:1.32(最低版本1.12)
Go版本:go1.8.3
Git提交:19e2cf6
内置:2017年12月7日星期四22:26:35 OS / Arch:linux / amd64实验性:false
我也在Windows上尝试了相同的结果。
答案 0 :(得分:2)
这两个警告是完全不相关的。
对于DataProtection警告,我建议遵循here on the official ASP.Net Core documents提出的指导。如果您想深入研究相关的源代码和决策,可以查看此relevant ASP.Net GitHub PR。
对于https重定向警告,我建议您简单地从通常通过startup.cs
定义的app.UseHttpsRedirection();
文件中删除https重定向策略,除非您实际上是在容器中使用此策略,在这种情况下您实际上需要setup the certificates并在容器上公开HTTPS端口。
答案 1 :(得分:2)
这是因为在创建ASP.NET Core项目时选择了“配置HTTPS”选项。这将添加HttpsRedirectionMiddleware中间件,该中间件将为您的Web应用程序强制实施SSL连接。您创建的docker文件仅指定HTTP端口。因此,HttpsRedirectionMiddleware失败并关闭了该应用程序。基本上,如果在创建项目时未选择“为HTTPS配置”选项,则可以正常进行或确保SSL正确设置(端口和证书)。
答案 2 :(得分:-2)
您的端口仅指定http协议而不是https,您可能必须找到一种方法使docker仅查看80并忽略用于https的443端口