我正在使用容器化的 ASP.Net Core (5) Web Api 應用程式。該容器是(基于 Linux 的容器)運行 Debian Stretch。一切正常,只是容器的 app/wwwroot 中的靜態檔案沒有按預期呈現。我什至確保 imgs、css、字體檔案實際上存在于“app/wwwroot”的容器中并且它們存在!
也在 Program.cs/CreateHostBuilder() 中:這條線在那里
.UseContentRoot(Directory.GetCurrentDirectory())
另外,在 Startup.cs 我這樣做了:
app.UseStaticFiles();
所以,我不知道可能是什么問題?它是否與 Rotativa / wkhtmltopdf 庫有關,因為它生成的 PDF 檔案應該使用這些靜態檔案?還是與 Dockerfile 本身有關? 這是 Dockerfile:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["src/Api/Api.csproj", "src/Api/"]
COPY ["src/Application/Application.csproj", "src/Application/"]
COPY ["src/Domain/Domain.csproj", "src/Domain/"]
COPY ["src/Infrastructure.Shared/Infrastructure.Shared.csproj", "src/Infrastructure.Shared/"]
COPY ["src/Persistence/Persistence.csproj", "src/Persistence/"]
COPY ["src/Api/wwwroot", "src/Api/"]
COPY ["src/Api/wwwroot", "./"]
COPY ["src/Api", "src/"]
COPY . ./
RUN dotnet restore "src/Api/Api.csproj"
RUN dotnet restore "src/Api"
COPY . .
WORKDIR "/src/src/Api"
RUN dotnet build "Api.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Api.csproj" -c Release -o /app/publish
RUN dotnet publish "/src/src/Api" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
VOLUME /app/wwwroot
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales libgdiplus wkhtmltopdf
RUN ln -s /usr/bin/wkhtmltopdf /app/wwwroot/Rotativa/wkhtmltopdf
ENTRYPOINT ["dotnet", "Api.dll"]
uj5u.com熱心網友回復:
您可能需要將靜態檔案的屬性設定為始終復制試試這個
- 在 Visual Studio 中右鍵單擊您的檔案。
- 單擊屬性。
- 將復制到輸出目錄設定為始終復制。
見附件截圖

uj5u.com熱心網友回復:
問題不是我想的路徑問題,而是容器IP地址,謝謝大家
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404852.html
標籤:
