天天看點

.net core Linux ( Centos 7 ) 下 驗證碼圖檔顯示不出來, 或者亂碼驗證碼圖檔顯示不出來驗證碼亂碼的解決

驗證碼圖檔顯示不出來

在 Linux 指令行運作:

dotnet Web.dll  # dll檔案名 自己換
           

(注意:不要用 nohup dotnet Web.dll 在背景運作,背景運作看不到異常)

再來通路登入界面, 此時驗證碼看不到, Linux 下提示: “Unable to load shared library 'gdiplus'” .

#1. 安裝 glib-2.0
yum install libgnomeui-devel

#2. 安裝 libgdiplus
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-5.6.tar.gz
tar -zxf libgdiplus-5.6.tar.gz
cd libgdiplus-5.6
./configure --prefix=/usr
make
make install
           

或者直接按: https://github.com/zkweb-framework/zkweb.system.drawing

的做法:

yum install autoconf automake libtool
yum install freetype-devel fontconfig libXft-devel
yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel
yum install glib2-devel cairo-devel
git clone https://github.com/mono/libgdiplus
cd libgdiplus
./autogen.sh
make
make install
cd /usr/lib64/
ln -s /usr/local/lib/libgdiplus.so gdiplus.dll
           

安裝完, 再運作, 會發現驗證碼出來了, 但有亂碼:

.net core Linux ( Centos 7 ) 下 驗證碼圖檔顯示不出來, 或者亂碼驗證碼圖檔顯示不出來驗證碼亂碼的解決

驗證碼亂碼的解決

主要是解決字型問題。

在生成驗證碼的代碼中, 關于字型的有一行:

string[] font = { "Times New Roman" };
           

是以先在  Windows 系統中找到:

.net core Linux ( Centos 7 ) 下 驗證碼圖檔顯示不出來, 或者亂碼驗證碼圖檔顯示不出來驗證碼亂碼的解決

複制到 Linux 中的 /usr/share/fonts/micro/ 下

mkdir /usr/share/fonts/micro/
cd /usr/share/fonts/micro/
# 字型檔案複制到這個檔案夾, 略
fc-cache  #重新加載字型
           

再重新執行 dotnet Web.dll , 驗證碼正常了。