使用FtpWebRequest上传文件出了这个错误 无奈本机又无法调试获取具体的错误 
手上只有关于这个错误的 描述如下: 
应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址。 
如何才能排除这个错误? p.s:FTP服务器(FileZilla Server)上设置的是被动模式  客户端与FTP服务器为不同网段具体上传代码如下:                     FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(ftpUrl + newFileName); 
                    request.UseBinary = true; 
                    request.Credentials = new NetworkCredential(FtpUid, FtpPwd); 
                    request.KeepAlive = false; 
                    request.EnableSsl = false; 
                    request.UsePassive = true; 
                    request.Method = WebRequestMethods.Ftp.UploadFile; 
                    request.ContentLength = finfo.Length; 
                    
                    byte[] buff = new byte[2048]; 
                    FileStream fs = finfo.OpenRead(); 
                    Stream reqStream = request.GetRequestStream();                     cfile.PrograssMin = 0; 
                    cfile.PrograssMax = (int)(finfo.Length / 2048); 
                    if (cfile.PrograssMax == 0) 
                    { 
                        cfile.PrograssMax = 1; 
                    }                     int contentlen = fs.Read(buff, 0, buff.Length); 
                    int i = 0; 
                    while (contentlen > 0) 
                    { 
                        reqStream.Write(buff, 0, buff.Length); 
                        contentlen = fs.Read(buff, 0, buff.Length); 
                        i++; 
                        cfile.PrograssValue= i; 
                    } 
                    reqStream.Flush(); 
                    reqStream.Close(); 
                    fs.Close();

解决方案 »

  1.   

    这个帮不了LZ啊,如果会一定告诉你了!
    http://hi.csdn.net/colin3dmax
      

  2.   

    这个我感觉应该是由FtpWebRequest控制,毕竟它可以设置被动模式属性我装个这个FTP服务器看看再给你回复
      

  3.   

    private static void UploadFile(string localFile)    
            {    
                FileInfo fi = new FileInfo(localFile);    
                FileStream fs = fi.OpenRead();    
                long length = fs.Length;    
                FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + FtpAddress + FtpRemotePath + fi.Name);    
                req.Credentials = new NetworkCredential(FtpUid, FtpPwd);    
                req.Method = WebRequestMethods.Ftp.UploadFile;    
                req.UseBinary = true;    
                req.ContentLength = length;    
                req.Timeout = 10 * 1000;    
                try   
                {    
                    Stream stream = req.GetRequestStream();                    
                    int BufferLength = 2048;     
                    byte[] b = new byte[BufferLength];    
                    int i;    
                    while ((i = fs.Read(b, 0, BufferLength)) > 0)    
                    {    
                        stream.Write(b, 0, i);    
                    }    
                    stream.Close();    
                    stream.Dispose();    
                        
                }    
                catch (Exception ex)    
                {    
                    Console.WriteLine(ex.ToString());    
                }    
                    
            }   
      

  4.   

    FtpWebRequest 只支持explicit SSL ,还有可能是配置问题
      

  5.   


    2种办法可以解决一是不使用被动模式:
    request.UsePassive = false; 二是修改服务器设置,被动模式的IP地址为默认,或者用指定的被动模式IP连接
    比如服务器IP是192.168.0.1,被动模式IP设置为了192.168.1.1,那么,你用192.168.1.1连接,看行不行
    一般都是相同地址吧,不同地址的话,很多FTP软件也搞不定的