我正在创建一个dotnet 6 webapi应用程序来提供REST API。我可以创建该项目,并通过Mac上的终端运行,并访问http://localhost:5000/swagger/来查看Swagger。当我尝试运行运行docker-compose run --rm server的Docker时,问题出现了。我无法访问Swagger并在浏览器选项卡上获得HTTP错误403。我也在API/Program.cs的app.UseHttpsRedirection();中注释了这一行。
我的文件夹结构是
my-project
-API/
- Folder with the webapi template
-dockerfiles/
- Dockerfile.dev
app.sln
docker-compose.ymldocker-compose.yml
version: '3.8'
services:
server:
build:
context: ./dockerfiles
dockerfile: Dockerfile.dev
volumes:
- ./:/app
ports:
- '5000:5000'
- '5001:5001'Dockerfile.dev
FROM mcr.microsoft.com/dotnet/sdk:6.0
WORKDIR /app/API/
RUN dotnet dev-certs https
EXPOSE 5000
CMD ["dotnet", "watch", "run"]运行docker-compose run --rm server时控制台中的输出
watch : Started
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: /app/API/接口/Properties/LaunchSettins.json
"profiles": {
"API": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},发布于 2021-11-28 18:59:15
在API/Properties/launchSettings.json中将applicationUrl更改为http://*:5000。我不确定这是不是你遇到的同样的问题,但我遇到了这个问题,它总是在容器内部工作,但从来没有在外部工作过。我认为这与localhost在连接到docker容器时被解析为其他内容有关,因此当它到达.NET应用程序时,传入的URL看起来不再像localhost。希望这也能解决你的问题。
https://stackoverflow.com/questions/69996156
复制相似问题