【发布时间】:2020-09-04 16:23:38
【问题描述】:
我有一个 ASP.NET Core Web 应用程序,其中一些值存储在 appsettings.json 中,这些值可通过 IConfiguration 服务访问。
当应用程序在 Windows 机器上的 IIS 中发布和托管时,这可以正常工作。但是,当在 linux docker 容器中运行时,appsettings 中的值会被替换为随机字符串,例如 7d5136967af41。
appsettings文件设置为始终复制到输出目录
<ItemGroup>
<Content Update="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
我不确定这个问题是从哪里来的,所以我也会添加 docker 文件
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["ProjectName/ProjectName.csproj", "ProjectName/"]
RUN dotnet restore "ProjectName/ProjectName.csproj"
COPY . .
WORKDIR "/src/ProjectName"
RUN dotnet build "ProjectName.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ProjectName.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "ProjectName.dll"]
运行docker build -t imagename -f ProjectName/Dockerfile .时没有错误,docker容器日志中也没有错误
如果需要任何其他文件,请告诉我,我也会添加它们,非常感谢任何帮助
谢谢
【问题讨论】:
-
您是否使用“--self-contained”选项创建发布?
-
在 IIS 中测试的发布我没有,但为 docker 发布我有
标签: c# asp.net-mvc docker asp.net-core appsettings