Почему FTP Handler не работает с большими файлами? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть обработчик ftp, который загружает файлы с ftp-сервера напрямую в браузер клиента:

public class FtpHandler : IHttpHandler
{

    string usname = "";
    //Connects to the FTP server and downloads the file
    private byte[] downloadFile(string FTPAddress, string filename, string username, string password)
    {
       byte[] downloadedData = new byte[0];

        try
        {
            //get the actual data
            FtpWebRequest request = FtpWebRequest.Create(FTPAddress + "/" + filename) as FtpWebRequest;
            request.Method = WebRequestMethods.Ftp.DownloadFile;
            request.Credentials = new NetworkCredential(username, password);
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = false; //close the connection when done
            request.EnableSsl = false;
            request.Timeout = -1;
            request.ReadWriteTimeout = 60000;

            //Streams
            FtpWebResponse response = request.GetResponse() as FtpWebResponse;
            MemoryStream memStream = new MemoryStream();
            using (Stream reader = response.GetResponseStream())
            {
                byte[] buffer = new byte[262144];
                int read;
                while ((read = reader.Read(buffer, 0, buffer.Length)) > 0)
                {
                    memStream.Write(buffer, 0, read);
                }
            }


            //Convert the downloaded stream to a byte array
            downloadedData = memStream.ToArray();

            //Clean up
            memStream.Close();
            response.Close();

            return downloadedData;
        }
        catch (Exception)
        {
            return null;
        }

    }

Он отлично работает с небольшими файлами, но когда я пытаюсь загрузить большой файл (например, 10 МБ), у меня появляется ошибка 504 Ошибка тайм-аута шлюза!

, пожалуйста, помогите мне решить проблему

...