heroku “Gdip”的类型初始值设定项引发异常

k0pti3hp  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(196)

我正在使用Heroku部署我的ASP.Net Core Web API,在调用Image.FromStream(memoryStream)函数时发生此错误:
System.DllNotFoundException:无法加载共享库“sitefiles”或它的某一个依赖项。为了帮助诊断加载问题,请考虑设置LD_DEBUG环境变量:liblibgdiplus:无法打开共享对象文件:没有这样的文件或目录
即使在Docker文件中使用RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev,这个错误仍然只在Heroku中发生(它不会在localhost中发生)。
有人能帮我解决吗?我正在做我的顶点项目,所以非常感谢得到你的帮助。

ff29svar

ff29svar1#

我找到了解决Linux中的.Net 6(heroku正在使用它来部署)不再支持System.Drawing库的方法。所以我决定把System.Drawing库改成ImageSharp库。您可以在此处找到有关更改的信息:https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only

wdebmtf2

wdebmtf22#

如上所述,你所要做的就是添加到dockerfile

RUN apt-get update \
    && apt-get install -y \
        libc6-dev \
        libgdiplus \
        libx11-dev \
     && rm -rf /var/lib/apt/lists/*

并添加到名为的项目根文件:runtimeconfig.template.json

{
  "configProperties": {
    "System.Drawing.EnableUnixSupport": true
  }
}

这只适用于网络核心6(不是7)

相关问题