用ftpwebrequest的方式写了一个从unxi上ftp下载文件的方法代码如下。 
用root用户可以下载到文件,但是改用其他用户会在代码 
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 
这行抛出WebException的错误。错误信息是550。 单独从cmd连接ftp用上面用户(非root用户)get文件是可以的get到的。(说明该用户有ftp权限) 这是什么原因呢??????? FtpWebRequest reqFTP; 
try 

FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create); 
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileName)); 
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; 
reqFTP.UseBinary = true; 
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 
Stream ftpStream = response.GetResponseStream(); 
long cl = response.ContentLength; 
FileStream outputStream = File.Create(currentPath); 
int bufferSize = 2048; 
int readCount; 
byte[] buffer = new byte[bufferSize]; 
readCount = ftpStream.Read(buffer, 0, bufferSize); 
while (readCount > 0) 

outputStream.Write(buffer, 0, readCount); 
readCount = ftpStream.Read(buffer, 0, bufferSize); 

ftpStream.Close(); 
outputStream.Close(); 
response.Close(); 

catch (Exception ex) 

MessageBox.Show(ex.Message); 

}

解决方案 »

  1.   

    路径的问题,登陆UNIX后,目录是在登陆用户的ftp目录下,这时取得是 /用户的ftp目录/指定目录
    连接后先切换到跟目录,在去指定目录取得就行了,这个是够就是/指定目录
      

  2.   

    问题的原因在于用其他用户登录时,用户会自动等到该用户锁定的目录下。
    例如,我用ftpuser登录会进入/home/ftpuser/目录下,而不会想root用户直接登录到根目录,
    这个问题同样困扰我,还想找资料中
      

  3.   

    我在MSDN中找到下面这段文字,希望可以帮助你:若要获得 FtpWebRequest 的实例,请使用 Create 方法。还可以使用 WebClient 类将信息上载到 FTP 服务器或从 FTP 服务器下载信息。使用其中任一种方法,在指定使用 FTP 方案的网络资源(例如,"ftp://contoso.com")时,FtpWebRequest 类都提供以编程方式与 FTP 服务器交互的功能。URI 可以是相对的也可以是绝对的。如果 URI 的形式为 "ftp://contoso.com/%2fpath"(%2f 是转义字符“/”),则该 URI 是绝对的,而且当前目录为 /path。但是,如果 URI 的形式为 "ftp://contoso.com/path",首先 .NET Framework 登录到 FTP 服务器(使用由 Credentials 属性设置的用户名和密码),然后将当前目录设置为 <UserLoginDirectory>/path。我试用过,的确有效!
      

  4.   

    这个问题已经解决了
    如5楼所说的要是用ftpuser登录会进入/home/ftpuser/目录下,而不会想root用户直接登录到根目录
    所以用其他用户前需要先跳到根目录下。
    具体方法是用转义字符/%2E%2E这个相当于/..
    ftpuser用户的目录有两层则需要跳出两次。在uri的路径前加两个/%2E%2E如 ftp://ip地址/%2E%2E/%2E%2E要下载的文件地址。现在的问题就是怎么知道该用户的默认目录有几层了。
    WebQuestMethods.Ftp.PrintWorkingDirectory这个方法就有用了哦!
      

  5.   

    其实这个问题的前辈在这里!http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/fe74576e-40bb-4140-b0d4-4b3c45696b36/
    http://blogs.msdn.com/mariya/archive/2006/03/06/544523.aspx