我已经搜索过此问题,但找不到解决方案...我有一个.NET Core Web API项目,并将其容器化在Docker内部。我的Docker主机是带有CentOS 7.5的VirtualBox中的VM。我使用以下命令运行容器:
docker run -d -name webapi -p 80:5000 netcorelnx
然后我可以使用以下命令:
docker exec -ti webapi /bin/bash
转到该容器并在其中执行:
curl localhost:5000/api/values
这将返回我的.NET Core Web API项目返回的正确值。 但是,当我尝试通过主机的浏览器通过使用URL http://localhost/api/values来调用它时,它说“连接已重置”。 这是我的dockerfile:
...
FROM microsoft/dotnet:2.1-aspnetcore-runtime-bionic AS runtime
...
ENV ASPNETCORE_URLS http://+:5000
ENTRYPOINT["dotnet", "NetCoreWebApi.dll"]
怎么了?
答案 0 :(得分:0)
像往常一样,经过许多小时的调查并发布了一个问题,我找到了解决方案。问题出在我未编写的.NET核心应用程序的代码中。有一行:
.UseKestrel(options => { options.Listen(IPAddress.Loopback, 5000); });
代替
.UseKestrel(options => { options.Listen(IPAddress.Any, 5000); });