前几天把新开发完成的程序布置到公司服务器上
发现WinForm端调用WebService的SoapHeader验证一直出错
原本在测试服务器中运行都是没有问题的
我在SoapHeader中加入了些垃圾数据调用GetHashCode()对哈希码进行验证
避免有权限的人跳过Client端通过URL直接调用WebMethod
而测试服务器是32位机,正式服务器却是64位机,装的也是64位系统
因为计算字长不同,得到的哈希码也不同
string str = "Hello World";
Console.WriteLine("string:"+str);
string hash = str.GetHashCode().ToString();
Console.WriteLine("HashCode:" + hash);
Console.ReadLine();
同一个程序在32位机与64位机上的运行结果:
32位:
64位:
64位的计算结果已经溢出了,用Int64声明变量也是同样结果
因为GetHashCode()返回的是Int32类型,啥时候出来个GetHashCode64()估计能产生相同结果吧
总之SoapHeader中的验证我已经放弃使用Hash码了
最后一篇技术类文章,下一篇开始响应老大号召,转移到博客园啦~~~