问题描述
这是个解密方法,全部代码如下:publicstaticstringDecryptUTF8Strings(stringstrText,stringkey){byte[]buffer=newMD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(key));TripleDESCryptoServiceProviderprovider=newTripleDESCryptoServiceProvider();provider.Key=buffer;provider.Mode=CipherMode.ECB;byte[]inputBuffer=Convert.FromBase64String(strText);returnEncoding.UTF8.GetString(provider.CreateDecryptor().TransformFinalBlock(inputBuffer,0,inputBuffer.Length));}也不报错,就是打不开网页了,我是在这一步前后加了日志才发现的,到这一步就没有下面的日志了。我在自己本地vs上从来没出过问题,在服务器上有时就会不行,过一段时间自己又好了。求解,分全押上了
解决方案
解决方案二:
不是所有的字符串都是合法的base64。比如:byte[]bs1=Convert.FromBase64String("MTox");//okbyte[]bs2=Convert.FromBase64String("MTo");//将抛出格式异常
这个属于‘输入’错误。你记录一下异常,然后把异常抛给调用方,或者告诉调用方strText有误就可以了。
解决方案三:
非合法的base64。你需要查找下strText从哪里来的,是否正常。
解决方案四:
我在自己本地vs上从来没出过问题,在服务器上有时就会不行,过一段时间自己又好了。这种“诡异”的问题,一般都是由于数据格式的错误造成的,所以你得加个try...catch,把strText内容和异常信息记录下来。
解决方案五:
细化你的日志,把strText的值加在日志中。
解决方案六:
上面几位说的把出错的那一行加进try..catch里是一个办法。排除是网络的问题,有可能是因为你的webservice里一直循环调用这个方法导致出现这种无法解释的“诡异”现象,也就能这么解释了。