当前位置: 代码迷 >> .NET Framework >> 从服务器下载FTP文件出现有关问题
  详细解决方案

从服务器下载FTP文件出现有关问题

热度:74   发布时间:2016-05-01 23:41:50.0
从服务器下载FTP文件出现问题
问题如下:
System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.FtpDataStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.IO.StreamReader.ReadBuffer()
   at System.IO.StreamReader.ReadLine()

各位大虾,这会不会是服务器内存不足导致呢?代码如下


public void FTPFile()
        {
            int i = 0;
            int k = 0;
            string temp_strServer = "ftp://××××";
            string temp_remoteFile = "XXX.tab";
            string temp_userID = "×××";
            string temp_passWord = "×××";
            Uri temp_URI = new Uri(temp_strServer + temp_remoteFile);
            string temp_localFilePath = Application.StartupPath + "/temp/";

            try
            {
                currentTime = DateTime.Now;
                WriteLog("---begin FTP---" + currentTime);

                FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(temp_URI);
                ftpReq.Method = WebRequestMethods.Ftp.DownloadFile;
                ftpReq.UseBinary = true;
                ftpReq.Credentials = new NetworkCredential(temp_userID, temp_passWord);
                FtpWebResponse ftpResp = (FtpWebResponse)ftpReq.GetResponse();
                StreamReader ftpRespStream = new StreamReader(ftpResp.GetResponseStream());
                //    Stream ftpRespStream = ftpResp.GetResponseStream();

                string line = ftpRespStream.ReadLine();
                while (line != null)
                {
                    FileInfo myfileinfo = new FileInfo(temp_localFilePath + "XXX_" + i.ToString() + ".tab");
                    if (!myfileinfo.Exists)
                    {
                        FileStream fs = myfileinfo.Create();
                        fs.Close();
                    }
                    StreamWriter mysw = myfileinfo.AppendText();
                    mysw.WriteLine(line);
                    mysw.Close();                                               // have to be closed
  相关解决方案