C# FTP,GetResponse(),远程服务器返回错误_实用技巧

FtpWebRequest类实现ftp功能的一般过程
1、创建一个FtpWebRequest对象,指向ftp服务器的uri
2、设置ftp的执行方法(上传,下载等)
3、给FtpWebRequest对象设置属性(是否支持ssl,是否使用二进制传输等)
4、设置登录验证(用户名,密码)
5、执行请求
6、接收相应流(如果需要的话)
7、如果没有打开的流,则关闭ftp请求

其中一些重要的属性如下:
·Credentials - 指定登录ftp服务器的用户名和密码。

·KeepAlive - 指定连接是应该关闭还是在请求完成之后关闭,默认为true

·UseBinary - 指定文件传输的类型。有两种文件传输模式,一种是Binary,另一种是ASCII。两种方法在传输时,字节的第8位是不同的。ASCII使用第8位作为错误控制,而Binary的8位都是有意义的。所以当你使用ASCII传输时要小心一些。简单的说,如果能用记事本读和写的文件用ASCII传输就是安全的,而其他的则必须使用Binary模式。当然使用Binary模式发送ASCII文件也是非常好的。

·UsePassive - 指定使用主动模式还是被动模式。早先所有客户端都使用主动模式,而且工作的很好,而现在因为客户端防火墙的存在,将会关闭一些端口,这样主动模式将会失败。在这种情况下就要使用被动模式,但是一些端口也可能被服务器的防火墙封掉。不过因为ftp服务器需要它的ftp服务连接到一定数量的客户端,所以他们总是支持被动模式的。这就是我们为什么要使用被动模式的原意,为了确保数据可以正确的传输,使用被动模式要明显优于主动模式。(译者注:主动(PORT)模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端的某一个大于1024的端口;在被动(PASV)模式中,数据传输的通道的建立是由FTP客户端发起的,他使用一个大于1024的端口连接服务器的1024以上的某一个端口)

·ContentLength - 设置这个属性对于ftp服务器是有用的,但是客户端不使用它,因为FtpWebRequest忽略这个属性,所以在这种情况下,该属性是无效的。但是如果我们设置了这个属性,ftp服务器将会提前预知文件的大小(在upload时会有这种情况)

·Method - 指定当前请求是什么命令(upload,download,filelist等)。这个值定义在结构体WebRequestMethods.Ftp中。

当你遇到:"远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)"时,可能是如下原因:
1.URL路径不对,看看有没有多加空格,或者大小写问题
2.权限是否足
3.需要反复连接的时候,如GetFileList,需要递归获得所有文件,keepAlive则设成false,一个查询请求完了后就关闭.

时间: 2024-08-26 01:13:56

C# FTP,GetResponse(),远程服务器返回错误_实用技巧的相关文章

[转]C# FTP,GetResponse(),远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)

来源:http://hi.baidu.com/kidcdf/blog/item/a1cb65ec3851d1d42e2e21e5.html FtpWebRequest类实现ftp功能的一般过程 1.创建一个FtpWebRequest对象,指向ftp服务器的uri2.设置ftp的执行方法(上传,下载等)3.给FtpWebRequest对象设置属性(是否支持ssl,是否使用二进制传输等)4.设置登录验证(用户名,密码)5.执行请求6.接收相应流(如果需要的话)7.如果没有打开的流,则关闭ftp请求

.NET 2.0 中FTP 出现远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。

问题描述 {System.Net.WebException:远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件).在System.Net.FtpWebRequest.SyncRequestCallback(Objectobj)在System.Net.FtpWebRequest.RequestCallback(Objectobj)在System.Net.CommandStream.Abort(Exceptione)在System.Net.FtpWebRequest.Finis

报远程服务器返回错误: (405) 不允许的方法。

问题描述 报远程服务器返回错误: (405) 不允许的方法. WebResponse webRespon = httpReq.GetResponse();远程服务器返回错误: (405) 不允许的方法. 解决方案 你的方法看上去有问题,可以用浏览器调用你的方法试试.看是否同样的错误 解决方案二: 是不是对方没有开放远程服务? 解决方案三: 应该是配置上吧 对对这些设置都改了吗http://www.cnblogs.com/dudu/p/http-status-405-method-not-allo

C#用FTP上传文件,经常出现远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。

问题描述 //根据uri创建FtpWebRequest对象reqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(path));//指定数据传输类型reqFTP.UseBinary=true;//ftp用户名和密码reqFTP.Credentials=newNetworkCredential(ftpUserID,ftpPassword);reqFTP.KeepAlive=false;reqFTP.UsePassive=true;reqFTP.ReadW

ftp-FTP上传文件错误:远程服务器返回错误: (500) 语法错误,无法识别命令

问题描述 FTP上传文件错误:远程服务器返回错误: (500) 语法错误,无法识别命令 在C#中写了一个FTP帮助类,上传文件的时候调用Stream strm = reqFTP.GetRequestStream();报异常,异常内容:远程服务器返回错误: (500) 语法错误,无法识别命令.代码运行在windows server 2008 r2上,我本地windows7上运行代码文件是能上传的,那一处代码没有报异常,求解!!! 解决方案 我曾经在win2008 r2和win7都装过serv-u,

实现天气接口报错-实现天气,报错远程服务器返回错误: (500) 内部服务器错误。

问题描述 实现天气,报错远程服务器返回错误: (500) 内部服务器错误. /// /// CityName为用户当前要查寻的城市名称 /// 本方法返回一个数据组 /// CityPhoto.ImageUrl = "http://www.cma.gov.cn/tqyb/img/city/" + list[3]; //这里的list[3]是城市的图片 /// lsit[0] 所属省 /// list[1] 城市 /// list[2] 城市编号 /// list[3] 图片 /// l

远程服务器返回错误,WebRequest 获取页面stream,服务器访问可行,其他机器访问报错

问题描述 碰到一奇怪问题,请求各位帮助程序代码如下:System.Net.WebRequestoRequest=System.Net.WebRequest.Create(strFileUrl);//oRequest.Credentials=CredentialCache.DefaultNetworkCredentials;//oRequest.ConnectionGroupName="HYIAP/wwdata";//oRequest.AuthenticationLevel=System

远程服务器返回错误: (500) 内部服务器

问题描述 在.net中发送xmlpost请求和接受xml的post请求时,遇到"远程服务器返回错误:(500)内部服务器错误".我在post请求的方法加入"text/xml"也不行求大神指教post的方法如下:stringGetResponse(stringurl,stringparam,stringMethod){byte[]postData=Encoding.UTF8.GetBytes(param);HttpWebRequestreq=(HttpWebReque

调环信的创建群组接口,System.Net.WebException: 远程服务器返回错误: (400) 错误的请求。

问题描述 报错:System.Net.WebException: 远程服务器返回错误: (400) 错误的请求.调这个接口之前成功过,现在报这个,可能是什么问题? 解决方案 (错误请求) 服务器不理解请求的语法.   检查一下