Я использую Windows Azure для создания системы управления документами, и до сих пор все прошло хорошо. Я смог загрузить и загрузить файлы в хранилище BLOB через интерфейс asp.net.Windows Azure DownloadtoStream Ошибка EOF
То, что я пытаюсь сделать сейчас, это позволить пользователям загружать ZIP-файл, а затем извлекать файлы из этого .zip и сохранять их в виде отдельных файлов. Проблема в том, что я получаю «ZipException был необработанным» «EOF в заголовке», и я не знаю, почему.
Я использую библиотеку ICSharpCode.SharpZipLib, которую я использовал для многих других задач, и она отлично работает.
Вот основной код:
CloudBlob ZipFile = container.GetBlobReference(blobURI);
MemoryStream MemStream = new MemoryStream();
ZipFile.DownloadToStream(MemStream);
....
while ((theEntry = zipInput.GetNextEntry()) != null)
и это на линии, которая начинается с в то время, что я получаю ошибку. Я добавил продолжительность сна 10 секунд, чтобы убедиться, что прошло достаточно времени.
MemStream имеет длину, если я его отлаживаю, но zipInput иногда, но не всегда. Это всегда терпит неудачу.
Спасибо за любую помощь.
Dave
То, что я сделал, было установлено .Position = 0, что сделало трюк ... похоже. Я думаю, что ваш поисковый ответ может иметь тот же результат. По-прежнему любопытно, почему это так, хотя, это не кажется мне логичным. – david
Ну, не все потоки поддерживают поиск. Например, вы можете создать веб-запрос, а затем использовать DownloadToStream() для переноса битов из хранилища Windows Azure в этот веб-запрос. В конце этого, поиск назад к началу не имеет смысла (биты уже отправлены). Я думаю, потому что вы не всегда можете вернуться к началу, библиотека клиентского хранилища делает единственную согласованную вещь, которую он может сделать, которая оставляет поток там, где он есть. – smarx
Я вижу это, но в контексте другого использует его нелогично. Я использовал функцию downloadtostream в DownloadtoStream (Response), и это отлично работает. Но, возможно, ответ автоматически сбрасывает позицию. Не знаю. по крайней мере, похоже, что он работает. – david