【问题标题】:HTTP ERROR 404 dotnet core API with Docker带有 Docker 的 HTTP ERROR 404 dotnet 核心 API
【发布时间】:2020-01-03 21:05:06
【问题描述】:

我正在尝试在 docker 容器中运行 dotnet Web API,但是当我运行它时,我无法导航到该站点,我在浏览器中得到 HTTP ERROR 404

这是我的 dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY Backend/AppManagerAPI/AppManagerAPI.csproj Backend/AppManagerAPI/
COPY Backend/DTO/DTO.csproj Backend/DTO/
COPY nuget.config ./
COPY Build/dependencies.props Build/
COPY Directory.Build.props ./
COPY ./*.sln ./
COPY Backend/Database/Database.csproj Backend/Database/
COPY Backend/Service/Service.csproj Backend/Service/
COPY Utilities/Utilities.csproj Utilities/
RUN dotnet restore "Backend/AppManagerAPI/AppManagerAPI.csproj"
COPY . .
WORKDIR "/src/Backend/AppManagerAPI"
RUN dotnet build "AppManagerAPI.csproj" -c Release -o /app

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
EXPOSE 5000
ENTRYPOINT ["dotnet", "AppManagerAPI.dll"]

我添加了.UseUrls("http://*:5000"),所以我在我的 program.cs 上监听来自端口 5000 的每个调用:

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseUrls("http://*:5000");
    }

如果我运行docker logs appmanager,我会得到这个:

Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:5000
Application started. Press Ctrl+C to shut down.

这就是我运行容器的方式: docker run -d -p 5000:5000 --name appmanager appmanager

我已经尝试了一切,但我不知道我错过了什么......

【问题讨论】:

  • 如果你运行docker logs appmanager,你能看到你的API返回了404吗?如果您的 API 返回 404,那么这是您的 API 内部的编程问题。如果返回 404 的不是您的 API,那么您并没有指向您认为的服务。
  • 如果我运行docker logs appmanager,我会得到我在问题中提到的日志。 @RB。
  • 您的请求网址是什么?是否有任何演示可以重现您的问题?

标签: c# .net docker asp.net-core .net-core


【解决方案1】:

找到问题 - 问题出在 csproj 设置文件上。

删除所有 Microsoft.* PackageReferences 并仅添加此一个后:

<PackageReference Include="Microsoft.AspNetCore.App" />

一切都按预期开始! :)

【讨论】:

  • 有同样的问题,我的 csproj 文件中有四个 PackageReferences,我删除了其他三个并重新构建并重新启动 docker 并重试,但没有任何改变。您是否更改了其他任何内容以使其正常工作?另外还有Razor、Container Tools、Json这些引用,怎么可能不需要呢?
  • 我不知道这如何帮助解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 2020-06-21
  • 2020-02-18
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多