最近在整合Discuz!NT,遇到一些问题。最奇怪的问题是:在我本地机器部署成功,但部署到服务器上就失败。
本地的系统是:win7 x32
服务器系统:window server 2008 x64
使用Debug Diagnostics诊断,发现源码引发了Crash。
在Discuz.Common.Encrypt的DES类中,Decode方法调用了CryptoStream.FlushFinalBlock()方法。
MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
在x64系统环境下,当传入的字符串为空时,该方法会引起应用程序崩溃。
微软关于FlushFinalBlock方法的说明:
解决方案:针对空字符串,直接返回。