1. 程式人生 > >[.Net跨平臺]部署DTCMS到Jexus遇到的問題及解決思路--驗證碼

[.Net跨平臺]部署DTCMS到Jexus遇到的問題及解決思路--驗證碼

遇到 .net lib 服務 解壓 代碼 新的 列表 tar

上一篇博客我們已經基本完成了部署工作,目前發現了驗證碼出現500錯誤,分析其代碼,我們可以看到驗證碼使用的是System.Drawing命名空間下的類庫, GDI+ 位圖,這個在肯定是平臺相關的,所以我們可以搜索GDI+mono來看有無解決方案。

通過搜索引擎,我們可以找到通過安裝GDI+兼容API的庫Libgdiplus可以實現GDI+功能。

安裝方法

cd /usr/local/src/ 
#通過訪問http://download.mono-project.com/sources/libgdiplus/獲取libgdiplus最新的版本
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz
#解壓縮
tar -zxvf libgdiplus-4.2.tar.gz
cd libgdiplus-4.2
#註意可能會提示缺少gcc或其他的組件,安裝後重新執行即可
./configure --prefix=/usr
make
make install

重啟Jexus服務,驗證碼可以顯示了

仔細觀察,和windows下驗證碼對比可以發現驗證碼字母顯示不全,通過分析代碼可以看到

//字體列表,用於驗證碼 
string[] font = { "Times New Roman", "Verdana", "Arial", "Gungsuh", "Impact" };

驗證碼使用了以上字體,而Linux中未安裝這些字體,所以我們需要安裝字體,可參考https://www.javawind.net/p130 安裝字體,最後重啟Linux,驗證碼問題解決!

[.Net跨平臺]部署DTCMS到Jexus遇到的問題及解決思路--驗證碼