我遇到了一个非常奇怪的问题。将 zip 文件从 Windows 8 客户端(用 C# 编写)上传到在 Server 2008 R2 上运行的 IIS 网页(也用 C# 编写)时,文件有时会损坏。我们无法在任何其他客户端操作系统(Windows 7、Vista、XP)上重现该问题。它并不一致,但经常发生足以成为一个问题。
当我使用二进制 diff 工具检查 zip 文件时,我发现替换具有明确的模式。
这是替换的示例。该模式在文件的不同实例之间是一致的。上面是原始文件,下面是服务器端保存的上传文件。
所有变化的模式都是一样的。首先是模式的八字节块:
0 0 C 0 免费
其中C
是某个字符,后跟一个八字节的未修改部分。
然后有一个 16 字节的修改部分,分为两个相同的 8 字节块。
模式太一致而不能随机,但我不知道是什么导致了问题。我什至不知道从哪里开始。
该代码已在 Windows 7 和 XP 上运行多年,没有出现明显问题。