'Gdip'的类型初始值设定项引发异常



我正在使用Heroku部署我的asp.net Core Web API,在调用Image.FromStream(memoryStream)函数时发生此错误:

系统。无法加载共享库'libgdiplus'或其依赖项之一。为了帮助诊断加载问题,可以考虑设置LD_DEBUG环境变量:liblibgdiplus: cannot open shared object file: No such file or directory

即使在Docker文件中使用RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev,这个错误仍然只在Heroku中发生(它不会在localhost中发生)。

谁能帮我解决这个问题?我正在做顶点项目,非常感谢你的帮助。

我找到了解决。net 6在Linux (heroku用来部署的操作系统)中不支持System的方法。绘图库。所以我决定改变这个系统。绘图库由imagessharp库。您可以在这里找到有关更改的信息:Microsoft Learn - System.Drawing.Common仅支持Windows

如上所述,您所要做的就是添加到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
}
}

From Microsoft Learn | System.Drawing.Common config switch移除了它的状态:

老行为

在。net 6之前,使用System.Drawing.Common包不能不会产生任何编译时警告,也不会产生任何运行时异常抛出。在。net 6中,你可以设置System.Drawing.EnableUnixSupport运行时配置设置重新启用非windows支持。

新行为

从。net 7开始,System.Drawing.EnableUnixSupport开关有被删除,你可以不再使用System.Drawing.Common

相关内容

  • 没有找到相关文章

最新更新