1

FTP クライアントを作成し、ファイルをサーバー (~300 MB) にアップロードしようとしていますが、100 MB 近くのファイルが転送されたときに次のエラーが発生します。

The underlying connection was closed: An unexpected error occurred on a receive.

これが私のコードです:

private void UploadFile(string filepath, string filename)
    {
        try
        {
            FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("ftp://" + server + "/" + filename);

            //ftp.KeepAlive = false;
            //ftp.Timeout = 1000000;
            //ftp.UsePassive = true;
            //ftp.ReadWriteTimeout = 100000;

            Path.GetFileName(filepath);
            ftp.Credentials = new NetworkCredential(username, password);
            ftp.Method = WebRequestMethods.Ftp.UploadFile;


            FileStream stream = File.OpenRead(filepath);
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, buffer.Length);
            stream.Close();


            Stream requestStream = ftp.GetRequestStream();
            //requestStream.ReadTimeout = 1000000;
            //requestStream.WriteTimeout = 1000000;
            requestStream.Write(buffer, 0, buffer.Length);
            requestStream.Close();         

            FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
            response.Close();
        }
        catch (Exception ex) { CreateRunLogFile(ex.Message); }

        CreateRunLogFile("Uploading of file " + filepath + " ended.");
    }

使ってみたり、

ftp.KeepAlive = false;
ftp.Timeout = 1000000;
ftp.UsePassive = true;

しかし、それは役に立ちませんでした。

4

1 に答える 1

1

送信先のファイアウォールの設定を確認してください。vsFTPd を実行している LINUX サーバーの場合、サーバーの ftp サービスには、構成ファイルに FILESIZE と TIMEOUT の設定があります。

FILESIZE と TIMEOUT の設定を調整したら、必ず vsFTPd サービスを再起動してください。

于 2015-01-15T21:46:11.120 に答える