首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在码头上运行的标准ASP.NET API模板不显示任何页面

在码头上运行的标准ASP.NET API模板不显示任何页面
EN

Stack Overflow用户
提问于 2022-02-01 00:24:37
回答 1查看 371关注 0票数 1

我遵循的步骤。

  1. 克隆回购。它是默认的ASP.NET API模板。(天气预报)
  2. 在解决方案目录上打开CMD。
  3. 运行docker build -t webapp4 -f WebApplication4/Dockerfile .
  4. 运行docker run -d -p 5000:80 webapp4
  5. 导航到http://localhost:5000/swagger。输出:找不到这个本地主机页(HTTP错误404)
  6. 导航到https://localhost:5000/swagger。输出:此站点无法提供安全连接(ERR_SSL_PROTOCOL_ERROR)

另一个选择

  1. 运行docker run -d -p 5000:443 webapp4
  2. 导航到http://localhost:5000/swagger。输出:此页面不工作(ERR_EMPTY_RESPONSE)
  3. 导航到https://localhost:5000/swagger。输出:无法到达此站点(ERR_CONNECTION_CLOSED)

我尝试使用VS代码插件、VS插件和Rider插件运行相同的项目。他们中没有一个人打开了傲慢的一页。

当我使用Docker在VS 2022上创建一个新项目并运行它时,自动打开的窗口也不会显示swagger页面。

当我运行docker run -d -p 80:80 docker/getting-started时,它运行得非常完美。我也看不出码头桌面有什么问题。

我对此有点陌生,在这里我完全处于黑暗之中。有什么不对的?

编辑

更多信息:

日志

代码语言:javascript
运行
复制
{"EventId":14,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Now listening on: https://[::]:443","State":{"Message":"Now listening on: https://[::]:443","address":"https://[::]:443","{OriginalFormat}":"Now listening on: {address}"}}
{"EventId":14,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Now listening on: http://[::]:80","State":{"Message":"Now listening on: http://[::]:80","address":"http://[::]:80","{OriginalFormat}":"Now listening on: {address}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Application started. Press Ctrl\u002BC to shut down.","State":{"Message":"Application started. Press Ctrl\u002BC to shut down.","{OriginalFormat}":"Application started. Press Ctrl\u002BC to shut down."}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Hosting environment: Development","State":{"Message":"Hosting environment: Development","envName":"Development","{OriginalFormat}":"Hosting environment: {envName}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Content root path: /app/","State":{"Message":"Content root path: /app/","contentRoot":"/app/","{OriginalFormat}":"Content root path: {contentRoot}"}}

https://localhost:5000/WeatherForecast也不起作用。直接在Kestrel或IIS上运行很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-01 08:06:59

图像中没有证书,因此https无法工作。您已经尝试过以许多不同的方式运行映像,所以我不清楚您显示的日志来自哪个日志。

无论如何,问题是您需要处于开发模式才能使用Swagger。使用-e选项设置它

代码语言:javascript
运行
复制
docker run -d -e ASPNETCORE_ENVIRONMENT=Development -p 5000:80 webapp4

然后您可以进入http://localhost:5000/swagger并试用API。

如果您愿意,可以添加

代码语言:javascript
运行
复制
ENV ASPNETCORE_ENVIRONMENT Development

以获得更永久的解决方案,如下所示

代码语言:javascript
运行
复制
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplication4/WebApplication4.csproj", "WebApplication4/"]
RUN dotnet restore "WebApplication4/WebApplication4.csproj"
COPY . .
WORKDIR "/src/WebApplication4"
RUN dotnet build "WebApplication4.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication4.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication4.dll"]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70934377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档