FTP上传会超时,但会上传文件

时间:2013-04-20 10:55:53

标签: c# monodevelop ftpwebrequest

我正在试图弄清楚这个元素,我已经制作了一个带有几个动作的ftp模块,除了上传方法外,它们都能很好地工作。事实上它确实有效,但它仍然会返回错误。

所以我在一段时间后得到一个超时错误,但是当我检查我的ftp时,文件成功添加。所以我无法理解这个功能..

我的代码:

public static Boolean upload(string remoteFile, string localFile, string applicatie_url) {
        Boolean returnbool = false;

        try {

            FtpWebRequest ftpRequest;
            FtpWebResponse ftpResponse = null;
            Stream ftpStream = null;

            ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
            ftpRequest.Credentials = new NetworkCredential(user, pass);
            ftpRequest.UseBinary = true;
            ftpRequest.UsePassive = true;
            ftpRequest.KeepAlive = true;
            ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; // upload

            byte[] b = File.ReadAllBytes(localFile);
            ftpRequest.ContentLength = b.Length;
            ftpStream = ftpRequest.GetRequestStream();

            try {

                ftpStream.Write(b, 0, b.Length);
                ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
            } catch (Exception ex) {
                                  // Error catching
            }

            // Cleanup
            ftpStream.Close();
            ftpRequest = null;
            ftpResponse = null;
            returnbool = true;

        } catch (Exception ex) { 
          // Error catching
        }

        return returnbool;
    }

我的ex.message:'转移超时。'

我的ex.stacktrace:  ''在/ Users / builder / data / lanes / mono-mac-ui-refresh-2-10 / 2baeee2f / source / bockbuild / profiles / mono-2中的System.Net.FtpWebRequest.EndGetResponse(IAsyncResult asyncResult)[0x00052] -10 /积聚根/单2.10.11 / _build /单2.10.11.git / MCS /类/系统/ System.Net / FtpWebRequest.cs:411   在/ Users / builder / data / lanes / mono-mac-ui-refresh-2-10 / 2baeee2f / source / bockbuild / profiles / mono-2-10 / build中的System.Net.FtpWebRequest.GetResponse()[0x00009] -root /单2.10.11 / _build /单2.10.11.git / MCS /类/系统/ System.Net / FtpWebRequest.cs:426   在AutoPolis.FTPHelper.upload(System.String remoteFile,System.String localFile,System.String applicatie_url)[0x00078] in /Users/.../App_Code/FTPHelper.cs:92'

任何帮助将不胜感激。我使用MonoDevelop作为IDE在我的Mac上工作,不知道这是否有机会使用这个元素..

1 个答案:

答案 0 :(得分:1)

我过去看了几个ftp程序,并注意到在你的代码清理中,你写了ftpResponse = null;但我会选择“ftpResponse.Close();”。您的stacktrace似乎提到了FTPWebRequest,所以这可能有所帮助!

P.S。这可能会有所帮助:http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class