2013-04-24 1 views
1

У меня возникла очень странная проблема. При загрузке zip-файла с клиента Windows 8 (написанного на C#) на веб-страницу IIS (также на C#), запущенную на сервере 2008 R2, файл иногда повреждается. Мы не смогли воспроизвести проблему с любой другой клиентской ОС (Windows 7, Vista, XP). Это непротиворечиво, но встречается достаточно часто, чтобы быть проблемой.Загрузка zip-файлов через http иногда приводит к повреждению файла (ошибка CRC-проверки)

Когда я изучил zip-файл с помощью двоичного инструмента diff, я обнаружил, что замены были в определенном шаблоне.

Binary diff comparison

Это пример из замен. Шаблон согласован между различными экземплярами файлов. Верх - это исходный файл, нижний - загруженный файл, сохраненный на стороне сервера.

Все изменения одинаковы. Во-первых восьми байтов блока шаблона:

0 0 C 0 F R E E

, где C некоторый символ, а затем восемь байт немодифицированного секции.

Затем имеется 16-байтовая модифицированная секция, разделенная на два одинаковых 8-байтовых блока.

Узор слишком последователен, чтобы быть случайным, но я понятия не имею, что вызывает проблемы. Я даже не знаю, с чего начать.

Код был запущен в Windows 7 и XP в течение многих лет без каких-либо очевидных проблем.

ответ

0

Проблема в том, что проблема с сетевой картой в vmware. Как только мы обновили нашу версию vmware, все вернулось к счастью.

0

Единственное предположение, что что-то происходит на транспортном уровне. Способ диагностики проблемы: загрузите тот же файл с помощью другого клиента/кода/компонента и посмотрите, не исчезла ли проблема. Фактические изменения в файле, скорее всего, неактуальны. Я думаю, что для передачи используется либо закодированное кодирование, либо сжатие (или оба), и оно ломает данные из-за ошибки в клиенте или на сервере. Другой компонент рассмотрит это, если вы можете убедиться, что не используется кодирование с кодированием и без сжатия.

+0

Я, к сожалению, начинаю соглашаться, проблема в транспортном слое (что очень очень плохо). Я не уверен, согласен ли я, что эти изменения не являются существенными. Они следуют абсолютной схеме (пример - это просто один из многих). Я думаю, что использование английского слова «Свободный» является ключевым. Где-то кто-то помещал эту буквальную строку, чтобы они могли вернуться и найти ее позже. – athelred

+0

@athelred также может быть следствием повреждения памяти. Попробуйте использовать другого клиента. –

Смежные вопросы