向 Docker 容器发送 HTTP 请求时出现问题

问题描述 投票:0回答:1

我使用命令

docker run -d -p 6000:5000 webapi
启动了 docker 容器,它在
localhost:5000
端口上运行 C# ASP.NET Core 应用程序。当我尝试使用 Postman 向主机上的 URL http://localhost:6000/api/Users 发送 GET 请求时(它应该只返回整个用户列表),它显示“错误:套接字挂起”。如果您进入容器内部并尝试仅使用端口 5000 将相同的 GET 请求发送到指定的 URL,则一切都会正常。可能是什么问题?

c# asp.net docker asp.net-core postman
1个回答
0
投票

当您使用

docker run

运行容器时,不会使用您的启动设置,并且您的应用程序会侦听默认端口。对于 .NET 8,端口为 8080;对于 .NET 7 及更早版本,端口为 80。

如果您的应用程序是.NET 8,您应该使用

docker run -d -p 6000:8080 webapi

由于您的应用程序是 webapi,因此您应该知道 Swagger 默认配置为仅在开发环境中可用。 Docker 容器不被视为开发环境,因此默认情况下 Swagger 不可用。

要使其可用,您可以将 ASPNETCORE_ENVIRONMENT 变量设置为“开发”,然后您的命令将如下所示

docker run -d -e ASPNETCORE_ENVIRONMENT=Development -p 6000:8080 webapi

您的 webapi(包括 Swagger)应该可以在 http://localhost:6000/ 上使用。

© www.soinside.com 2019 - 2024. All rights reserved.