解决非Windows系统的System.Drawing.Common不再支持.NET6的问题,第三种方式更换SkiaSharp组件
之前服务跑的还好好的,不知道是何原因今天登录页一打开,验证码图片出不来了,本来以为是Gdip的组件出问题了,一查才发现System.Drawing.Common类不支持Linux系统了。我这边实际使用的Nuget包:SkiaSharp.NativeAssets.Linux.NoDependencies。常用的这两种够用了,方法一是永久配置,方法二可以在部署的时候动态配置。将安装包里面的【字体库相关
之前服务跑的还好好的,不知道是何原因今天登录页一打开,验证码图片出不来了,本来以为是Gdip的组件出问题了,一查才发现System.Drawing.Common类不支持Linux系统了
解决方法一:
在项目启动时,配置 AppContext Switch,设置 System.Drawing.EnableUnixSupport,如:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
解决方法二:
在应用build/publish之后的文件夹目录,会有一个 [项目名].runtimeconfig.json,添加一行代码:
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
常用的这两种够用了,方法一是永久配置,方法二可以在部署的时候动态配置。
解决方法三:使用SkiaSharp组件
我这边实际使用的Nuget包:SkiaSharp.NativeAssets.Linux.NoDependencies
使用方法如下:
详细的生成图片的工具类有点长,就不贴了,可以自行百度搜索一下。
这种方式就不需要单独在runtimeconfig.json里面修改配置,但是需要将发布包里面相对应的文件复制到系统目录下,如:
cp /runtimes/linux-x64/native/libSkiaSharp.so /usr/lib/
cp /runtimes/linux-x64/native/libSkiaSharp.so /usr/lib64/
chmod 777 /usr/lib/libSkiaSharp.so
chmod 777 /usr/lib64/libSkiaSharp.so
Q&A
1.登录页验证码图片只显示半截黑色图片,不显示验证码
1.先F12查看验证码请求,返回是否200成功
http://[IP]:8080/MyAuth/Account/GetVerifyCode
如果成功,没有字母数字,则服务器字体库未安装
解决方案:
将安装包里面的【字体库相关配置】文件夹下面的文件复制到对应目录下,
包含:
/usr/shared/fonts、/usr/shared/fontconfig、/etc/fonts
然后运行sudo fc-cache -f -v命令刷新字体缓存
fc-list可以看到刚刚的配置了,
如果执行不了指令,直接reboot重启
更多推荐
所有评论(0)