之前服务跑的还好好的,不知道是何原因今天登录页一打开,验证码图片出不来了,本来以为是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重启

Logo

更多推荐