首页 > 解决方案 > 无法在 docker 中运行 Asp.Net core web api 脚手架应用程序?

问题描述

我使用 Visual Studio 2017 并创建了一个支持 docker (Linux) 的 Web API 应用程序。它在运行时给出了以下消息。

PS C:\> docker run hack2
警告:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      未配置 XML 加密器。密钥 {93297fb1-e111-46f6-91e1-1bb4878a3941} 可能会以未加密的形式保存到存储中
 形式。
托管环境:生产
内容根路径:/app
现在收听:http://[::]:80
申请开始。按 Ctrl+C 关闭。

这是脚手架Docker文件。

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
工作目录 /app
曝光 80
暴露 443

FROM microsoft/dotnet:2.1-sdk AS build
工作目录 /src
复制 ["hack2/hack2.csproj", "hack2/"]
运行 dotnet 恢复“hack2/hack2.csproj”
复制 。.
工作目录“/src/hack2”
运行 dotnet build "hack2.csproj" -c Release -o /app

FROM 构建 AS 发布
运行 dotnet 发布“hack2.csproj”-c 发布 -o /app

从基础 AS 最终
工作目录 /app
复制 --from=publish /app 。
入口点 ["dotnet", "hack2.dll"]

在本地 Windows 10 PC 中尝试时,它显示

$ curl 本地主机/api/值
  % 总计 % 接收 % Xferd 平均速度 时间 时间 时间 当前
                                 下载上传总花费剩余速度
  0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0curl: (7) 无法连接到 localhost 端口 80: 连接被拒绝

然后我将图像复制到 Linux 机器并尝试curl

curl localhost/api/values
<HTML><HEAD>
<TITLE>Request Error</TITLE>
</HEAD>
<BODY>
<FONT face="Helvetica">
<big><strong></strong></big><BR>
</FONT>
<blockquote>
<TABLE border=0 cellPadding=1 width="80%">
<TR><TD>
<FONT face="Helvetica">
<big>Request Error (invalid_request)</big>
<BR>
<BR>
</FONT>
</TD></TR>
<TR><TD>
<FONT face="Helvetica">
Your request could not be processed. Request could not be handled
</FONT>
</TD></TR>
<TR><TD>
<FONT face="Helvetica">
This could be caused by a misconfiguration, or possibly a malformed request.
</FONT>
</TD></TR>
<TR><TD>
<FONT face="Helvetica" SIZE=2>
<BR>
For assistance, contact your network support team.
</FONT>
</TD></TR>
</TABLE>
</blockquote>
</FONT>
</BODY></HTML>

标签: .netvisual-studiodockerasp.net-core.net-core

解决方案


您的机器上是否有 80 端口可用(默认 Web 服务器不使用?)

尝试docker run -p 80:80 hack2

有关如何与主机共享端口的详细信息,请查看Docker 文档。docker run --publish


推荐阅读