当前位置:编程学习 > C#/ASP.NET >>

最后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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,