FtpWebRequest при чтении файла сразу после загрузки дает ошибку «Отказано в доступе» - PullRequest
0 голосов
/ 23 июня 2011

Мы используем класс FTPWebRequest в моем проекте для загрузки файлов PDF. Для загрузки файла мы используем метод Write, получая GetRequestStream () из объекта (FtpWebRequest) WebRequest.

После загрузки файлов мы читаем файл, чтобы получить длину (размер файла). Мы используем GetResponseStream метод FtpWebResponse для того же.

Все работает нормально, когда размер файла меньше, но когда загружаются тяжелые файлы, это дает ошибку «550» при отказе в доступе.

Мне кажется, что, когда большие файлы записываются на FTP и после закрытия потока, если мы немедленно переходим к чтению файла, это создает проблему отказа в доступе, возможно, FTP-сервер не снял блокировку с файла или все еще запись файла из потока.

Как можно избавиться от этой проблемы. Есть ли какое-либо событие или способ узнать, что файл успешно записан на FTP-сервер, когда мы закрываем поток, который используется для загрузки файла?

1 Ответ

0 голосов
/ 05 июля 2011

Хотя я не знаю почему, но следующие шаги помогли мне решить эту проблему

  1. Установите низкий размер буфера на FTP-сервере, обычно это 64 К, вы можете установить его в 32 k

  2. Отправляйте чанки на сервер, а не отправляйте их по очереди, потому что при отправке за один раз данные сохраняются в буфере, и когда мы делаем запрос на чтение файла, появляется ошибка.

...