最后50分求高手解救:C# 2.0 ftp上传下载,遇到(基础连接已经关闭: 接收时发生错误。) 解决了就给分呀!
求高手解救:C# 2.0 ftp上传下载,遇到(基础连接已经关闭: 接收时发生错误。) 为什么有的人用这个程序可以,我用就不行,是跟什么有关呢?调试在这个地方报错:
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
有需要,我把程序发给你们,帮我调一下!万分感激呀!
上传下载都一样.
错误如下:
基础连接已经关闭: 接收时发生错误。
在 System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
在 System.Net.FtpWebRequest.RequestCallback(Object obj)
在 System.Net.CommandStream.Abort(Exception e)
在 System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
在 System.Net.FtpWebRequest.GetRequestStream()
在 FTP24CP.Form1.Upload(String filename) 位置 C:\Documents and Settings\Administrator\桌面\ftpTemp\FTP24CP\Form1.cs:行号 80
相关代码如下:
private void btnUpload_Click(object sender, EventArgs e)
{
OpenFileDialog opFilDlg = new OpenFileDialog();
if (opFilDlg.ShowDialog() == DialogResult.OK)
{
Upload(opFilDlg.FileName);
}
}
/// <summary>
/// Method to upload the specified file to the specified FTP Server
/// </summary>
/// <param name="filename">file full name to be uploaded</param>
private void Upload(string filename)
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;
// Create FtpWebRequest object from the Uri provided
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
// Provide the WebPermission Credintials
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
// By default KeepAlive is true, where the control connection is not closed
// after a command is executed.
reqFTP.KeepAlive = false;
// Specify the command to be executed.
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
// Specify the data transfer type.
reqFTP.UseBinary = true;
// Notify the server about the size of the uploaded file
reqFTP.ContentLength = fileInf.Length;
// The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
// Opens a file stream (System.IO.FileStream) to read the file to be uploaded
FileStream fs = fileInf.OpenRead();
try
{
// Stream to which the file to be upload is written
Stream strm = reqFTP.GetRequestStream();
// Read from the file stream 2kb at a time
contentLen = fs.Read(buff, 0, buffLength);
// Till Stream content ends
while (contentLen != 0)
{
// Write Content from the file stream to the FTP Upload Stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
// Close the file stream and the Request Stream
strm.Close();
fs.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Upload Error");
}
}
--------------------编程问答-------------------- 网上找个FTP的类就可以了,里面都写好了 --------------------编程问答-------------------- 顶一个.
有高手快点来解决一下啦. --------------------编程问答-------------------- 我就是用.net 2.0自带的 --------------------编程问答-------------------- 谁有FTP的类写好的,发我一个也好呀,有点小例子的,我只需要实现简单的功能.邮箱:chengzhoujuan@sina.com --------------------编程问答-------------------- 我也想知道啊,帮你顶一下. --------------------编程问答-------------------- 我就是不明白,为什么同样的程序,网上很多人用,他们用的没问题,到我这就出错?是哪个环节出错了?还是服务器设置的问题呢?我是菜鸟呀,高手们,帮忙解决一下!
--------------------编程问答-------------------- 没做过这个方面的,帮顶 --------------------编程问答-------------------- 没看出问题来。我发给你一个吧。
--------------------编程问答-------------------- 发了,你收一下。 --------------------编程问答-------------------- 好,我去收,再试一下.先谢啦! --------------------编程问答-------------------- [zzf2004] 再次请问一下,如果我要下载,是不是这样写?
string Username = "administrator";
string Password = "adminadmin";
ftpOC = new ftpOparate.ftpOparateClass(Username,Password);
string localPath = "D:\\ftp";
string ftpServerIP = "192.168.1.8";
string ftpPath = "ftp://" + ftpServerIP + "/" + "share" + "/" + "实施计划.txt";
ftpOC.downloadFile(localPath, ftpPath); --------------------编程问答-------------------- 楼主,解决没有~~~
学习中、、、、 --------------------编程问答-------------------- 还没呀,兄弟 --------------------编程问答-------------------- 是的.你写的没问题啊. --------------------编程问答-------------------- 呀.不对.localPath是文件名.不是路径. --------------------编程问答-------------------- 呀,我看 --------------------编程问答-------------------- 试试这个
.NET 2.0下FTP访问程序
remex 著于2007-8-3 8:26:06
也许大家也不想总依赖着第三方FTP软件,值得高兴的是,本文将给你开发出一套免费的来。尽管,本文中的代码没有设计成可重用性很高的库,不过确实是一个简单的可以重复使用部分代码的程序。最终演示如何在.NET 2.0中使用C#设计FTP访问程序。 --------------------编程问答-------------------- 老是报错:基础连接已经关闭: 接收时发生错误。) 我再多试试 --------------------编程问答-------------------- mark
--------------------编程问答-------------------- 问题解决了,散分了,感谢帮助偶的朋友们@ --------------------编程问答-------------------- 建立了一个c#和vb的讨论群,欢迎大家加入。欢迎高手!群号:47047449 --------------------编程问答-------------------- 想请问楼主,是怎么解决的?
我也是使用FtpWebResponse来做上传下载的时候遇到了问题。
并且也是 (FtpWebResponse)Request.GetResponse();这里报错的,报的错是这样的
System.Net.WebException: 无法访问已释放的对象。
很想知道楼主是怎样解决的?
因为我查了很多资料貌似.net2.0中FtpWebResponse,FtpWebResponse用来做ftp的上传下载时有bug的 --------------------编程问答-------------------- 楼主是怎么解决 的啊
说说啊 --------------------编程问答-------------------- 偶也是用.Net自带的FTP程序出来的异常也是“基础连接已经关闭:接收时发送错误”
不知楼主是怎么解决的,非常期待你的答案。 --------------------编程问答-------------------- 以前遇到这个问题是因为服务器ftp设置里边ip地址和服务器本身ip地址不对应. --------------------编程问答-------------------- 为什么不用WebClient类, System.net库中的。
直接有UploadFile和DownloadFile方法,多省事 --------------------编程问答-------------------- 真吊胃口 --------------------编程问答-------------------- .net中的FTP服务器不支持中消息。
去掉FTP服务器中的中文欢迎词或改成英文欢迎词就不会发生错误,这是微软的一个BUG。
参考。
http://blog.csdn.net/xjzdr/archive/2008/01/10/2034067.aspx
好运~
--------------------编程问答-------------------- 与timeout也有关,设为10秒时,上传一个30K的文件成功,上传800K的文件出错消息同LZ,timeout= 100秒时,上传800K的文件Response成功! --------------------编程问答-------------------- 去掉FTP服务器中的中文欢迎词或改成英文欢迎词 --------------------编程问答-------------------- -.- 我还有个程序, 用 ftprequest, 目录列表下文件比较多时(现在有30000+), list 的时候总是出错, 卡住=,= 无返回... 啊啊啊.
没人帮我看看的啊.
补充:.NET技术 , C#