Linux环境下 ,导出文件功能报错“The type initializer for 'Gdip' threw an exception”
asp .net core 项目 部署在docker中,文件导出使用了System.Drawing.Common包,在容器中使用时报错“The type initializer for 'Gdip' threw an exception.” 排查了一下,发现是docker容器中 System.Drawing.Common Gdiplus 相关依赖缺失的缘故
解决方案:
1.远程连接服务器
2.输入指令
1、apt-get install libgdiplus
2、cd /usr/lib
3、ln -s libgdiplus.so gdiplus.dll 或 sudo ln -s libgdiplus.so gdiplus.dll
3.修改dockerfile文件,加上以下两句代码
RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev
RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
4.修改成功后重新发布,就不会再报错了。但是有了新的错误
解决:配置文件修改了一下,将文件存储的目录进行挂载以后就能成功导出文件了
注意:除此之外还有需要注意的地方就是文件的路径问题,linux和windows的写法不同,路径带有中文和“/”也会有问题,需要处理