我正在试图弄清楚这个元素,我已经制作了一个带有几个动作的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上工作,不知道这是否有机会使用这个元素..
答案 0 :(得分:1)
我过去看了几个ftp程序,并注意到在你的代码清理中,你写了ftpResponse = null;但我会选择“ftpResponse.Close();”。您的stacktrace似乎提到了FTPWebRequest,所以这可能有所帮助!
P.S。这可能会有所帮助:http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class