1

皆さんこんにちは。

FTP サーバーからいくつかのファイルをダウンロードしようとしていますが、以前は同じコードが機能していたため、これが機能しない理由がわかりません。サービスを実行すると、次のエラーが表示されます。

エラー 1053: サービスは開始要求または制御要求にタイムリーに応答しませんでした

GetFileSizeDownloadFileの後に実行すると思われるDeleteFileなどの他のメソッドを実行しようとしましたが、それらは機能しますが、これはそうではなく、理由がわかりません。何か案は?私のコードは以下の通りです。

            FtpWebRequest reqFTP;

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(server + file));
            reqFTP.Credentials = new NetworkCredential(username, password);

            reqFTP.KeepAlive = true;
            reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
            reqFTP.UseBinary = true;
            reqFTP.Proxy = null;
            reqFTP.UsePassive = false;
            reqFTP.Timeout = -1;

            FtpWebResponse response2 = (FtpWebResponse)reqFTP.GetResponse();
            Stream responseStream2 = response2.GetResponseStream();

            FileStream writeStream = new FileStream(folder + file, FileMode.Create);

            int Length = 2048;
            Byte[] buffer = new Byte[Length];
            int bytesRead = responseStream2.Read(buffer, 0, Length);

            while (bytesRead > 0)
            {
                writeStream.Write(buffer, 0, bytesRead);
                bytesRead = responseStream2.Read(buffer, 0, Length);
            }
            writeStream.Close();
            response2.Close();

            try
            {
                string uri2 = server + file;
                Uri serverUri2 = new Uri(uri);
                if (serverUri2.Scheme != Uri.UriSchemeFtp)
                {
                    return;
                }
                FtpWebRequest reqFTP2;
                reqFTP2 = (FtpWebRequest)FtpWebRequest.Create(new Uri(server + file));
                reqFTP2.Credentials = new NetworkCredential(username, password);
                reqFTP2.KeepAlive = false;
                reqFTP2.Method = WebRequestMethods.Ftp.DeleteFile;
                reqFTP2.UseBinary = true;
                reqFTP2.Proxy = null;
                reqFTP2.UsePassive = false;
                FtpWebResponse response3 = (FtpWebResponse)reqFTP2.GetResponse();
                Stream responseStream3 = response3.GetResponseStream();
                response3.Close();
            }
4

0 に答える 0