我编写了一个函数,它将文件的URL作为参数,并返回该文件的MD5哈希值.
此函数生成的哈希(在开发环境中)与第三方工具为同一文件生成的哈希相匹配.
但是当它部署在我的客户端的QA环境中时,每次调用该函数时,此函数都会返回不同的值.
我做了一些谷歌,发现问题可能是因为开发.服务器是64位,QA服务器是32位.由于我无法访问客户端的服务器,因此我将其部署在另一台32位服务器上,发现即使在32位服务器中哈希也匹配(函数按预期工作?).
我也看了一下这个问题.
这是我写的函数:
public static String GetMD5HashFromFile(String url)
{
String response = String.Empty;
HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(url);
using (HttpWebResponse aResponse = (HttpWebResponse)aRequest.GetResponse())
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(aResponse.GetResponseStream());
response = "MD5:" + BitConverter.ToString(retVal).Replace("-", string.Empty);
}
return response;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是; 这个函数返回各种值的原因是什么?问题出在我的职能部门吗?
尝试添加日志记录。因此,首先将文件下载到字符串(将其写入磁盘上的某个位置,以便稍后进行比较)。然后计算磁盘上的哈希值。我在我的一个项目中遇到了这样的问题,在这种情况下,问题出在代理服务器上,它添加了一些响应内容。但是如果磁盘上没有文件,您就无法比较它们。