San*_*dey 3 .net c# asp.net docker .net-core
我已将 dotnet 应用程序从 Dotnet Core 3.1 升级到 Dotnet 6。升级后我收到此错误:
Microsoft.Azure.Storage.StorageException: Only the invariant culture is supported in globalization-invariant mode. See https://aka.ms/GlobalizationInvariantMode for more information. (Parameter 'name')
en-US is an invalid culture identifier.
---> System.Globalization.CultureNotFoundException: Only the invariant culture is supported in globalization-invariant mode. See https://aka.ms/GlobalizationInvariantMode for more information. (Parameter 'name')
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我发现我们可以尝试InvariantGlobalization as false在 csproj 中设置 ,并在 docker 中设置ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false。但是当我进行这些更改并重新运行应用程序时,我收到另一个错误:
Process terminated. Couldn't find a valid ICU package installed on the system. Please install libicu using your package manager and try again. Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support. Please see https://aka.ms/dotnet-missing-libicu for more information.
at System.Environment.FailFast(System.String)
Run Code Online (Sandbox Code Playgroud)
解决这个建议与我为解决不变文化(第一期)所做的工作正好相反。有人可以帮我解决这个问题吗?
我的 docker 文件如下所示:
FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine3.14
LABEL pipelineName="somedummyapplication" \
pipelineKey="DSENJRNF" \
offeringKey="UQWHCLRA"
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
RUN echo 'http://dl-3.alpinelinux.org/alpine/v3.16/main' >> /etc/apk/repositories
RUN apk upgrade && apk add sqlite && apk add krb5
EXPOSE 5000
ENV ASPNETCORE_URLS=http://*:5000
WORKDIR /app
COPY . /app
USER guest
ENTRYPOINT ["dotnet", "abc.somedummyapplication.dll"]
Run Code Online (Sandbox Code Playgroud)
我已经检查并尝试这些链接来解决问题,但正如我所说,如果我解决了另一个问题,就会出现:在 Docker 中运行 .NET 6 项目会抛出 Globalization.CultureNotFoundException 并 终止进程。在 Asp.Net Core 3 中找不到系统上安装的有效 ICU 包 - ubuntu
小智 5
基于Alpine的镜像不包含ICU,需要手动安装。
icu 包已分为:
- icu-data-en (2.6 MiB) - 仅使用 en_US/GB 语言环境且没有旧版字符集转换器来精简 ICU 数据。
- icu-data-full (29 MiB) - 完整的 ICU 数据。
icu-libs 仅安装 icu-data-en。如果需要其他语言支持,则需要手动安装 icu-data-full。
apk add icu-libs icu-data-full
Run Code Online (Sandbox Code Playgroud)
您可能还会遇到类似的问题TimeZoneInfo.FindSystemTimeZoneById,因为基于 Alpine 的图像不包含 tzdb:
apk add tzdata
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3923 次 |
| 最近记录: |