У меня возникла очень странная проблема. При загрузке zip-файла с клиента Windows 8 (написанного на C#) на веб-страницу IIS (также на C#), запущенную на сервере 2008 R2, файл иногда повреждается. Мы не смогли воспроизвести проблему с любой другой клиентской ОС (Windows 7, Vista, XP). Это непротиворечиво, но встречается достаточно часто, чтобы быть проблемой.Загрузка zip-файлов через http иногда приводит к повреждению файла (ошибка CRC-проверки)
Когда я изучил zip-файл с помощью двоичного инструмента diff, я обнаружил, что замены были в определенном шаблоне.
Это пример из замен. Шаблон согласован между различными экземплярами файлов. Верх - это исходный файл, нижний - загруженный файл, сохраненный на стороне сервера.
Все изменения одинаковы. Во-первых восьми байтов блока шаблона:
0 0 C 0 F R E E
, где C
некоторый символ, а затем восемь байт немодифицированного секции.
Затем имеется 16-байтовая модифицированная секция, разделенная на два одинаковых 8-байтовых блока.
Узор слишком последователен, чтобы быть случайным, но я понятия не имею, что вызывает проблемы. Я даже не знаю, с чего начать.
Код был запущен в Windows 7 и XP в течение многих лет без каких-либо очевидных проблем.
Я, к сожалению, начинаю соглашаться, проблема в транспортном слое (что очень очень плохо). Я не уверен, согласен ли я, что эти изменения не являются существенными. Они следуют абсолютной схеме (пример - это просто один из многих). Я думаю, что использование английского слова «Свободный» является ключевым. Где-то кто-то помещал эту буквальную строку, чтобы они могли вернуться и найти ее позже. – athelred
@athelred также может быть следствием повреждения памяти. Попробуйте использовать другого клиента. –