上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客
.NET 6之前,在Linux服务器上安装 libgdiplus 即可解决,libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目。地址:GitHub - mono/libgdiplus: C-based implementation of the GDI+ API
因此,解决方法当然是安装相关的依赖:
1、CentOS
通过一键命令
sudo curl https://raw.githubusercontent.com/stulzq/awesome-dotnetcore-image/master/install/centos7.sh|sh
或者
yum update
yum install libgdiplus-devel -y
ln -s /usr/lib64/libgdiplus.so /usr/lib/gdiplus.dll
ln -s /usr/lib64/libgdiplus.so /usr/lib64/gdiplus.dll
2、银河麒麟V10 或 Ubuntu
通过一键命令
sudo curl https://raw.githubusercontent.com/stulzq/awesome-dotnetcore-image/master/install/ubuntu.sh|sh
或者
apt-get update
apt-get install libgdiplus -y
ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
3、Docker
Dockerfile 加入 RUN 命令,以官方 asp.net core runtime 镜像,以 asp.net core 2.2 作为示例:
FROM microsoft/dotnet:2.2.0-aspnetcore-runtime
WORKDIR /app
COPY . .
RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
EXPOSE 80
ENTRYPOINT ["dotnet", "<你的入口程序集>"]
需要注意的是apt-get update 这一步是必不可少的,不然会报找不到 libgdiplus。而且因为是官方镜像,用的是Debain10构建的docker镜像,在编译运行构建时会非常慢。
由于本人项目已从NetCore3.1升级到Net6.0,参考连接:NetCore3.1项目升级到Net6.0_.net 3.0 .net6 升级_csdn_aspnet的博客-CSDN博客
且项目中使用的System.Drawing.Common已替换为其它解决方法,如果你没有其它方案,请参考:.NET6 System.Drawing.Common 通用解决办法_csdn_aspnet的博客-CSDN博客
于是修改代码,将错误信息在swagger页面调用接口测试中输出,方便解决具体问题,提示如下:
Access to the path '/xxx/xxx' is denied. 或 access to the path xxx is denied
说明当前用户权限不够,所以要使用chmod,将wwwroot文件夹授权:chmod 777 wwwroot
其中 777,所有用户都具有读取写入权限,再次使用swagger上传如下图: