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.ReadWriteTimeout=10000;//指定执行什么命令reqFTP.Method=WebRequestMethods.Ftp.UploadFile;//上传文件时通知服务器文件的大小reqFTP.ContentLength=fileInf.Length;//缓冲大小设置为kbintbuffLength=2048;byte[]buff=newbyte[buffLength];longFileSize=fileInf.Length;//打开一个文件流(System.IO.FileStream)去读上传的文件FileStreamfs=fileInf.OpenRead();try{//把上传的文件写入流//Thread.Sleep(10*1000);Streamstrm=reqFTP.GetRequestStream();while(true){//每次读文件流的kbintcontentLen=fs.Read(buff,0,buffLength);//把内容从filestream写入uploadstreamif(contentLen==0){break;}strm.Write(buff,0,contentLen);}//关闭两个流strm.Close();fs.Close();errormessage=uri;returntrue;}catch(Exceptionex){errormessage=ex.Message;fs.Close();returnfalse;}一般情况下地一次上传文件是成功的,紧接着上传就出现:远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)。过几分钟再上传也能成功。感觉像FTP连接没有断开,KEEPLIVE已经设置为FALSE,不知道为什么还是不行。研究了很久也没搞定。希望能有人帮帮忙

解决方案

解决方案二:
连接被重置了吧.你得代码里面得加上异常处理机制
解决方案三:
引用1楼caoqinghua的回复:

连接被重置了吧.你得代码里面得加上异常处理机制

try{}catch{}不就是异常机制吗?连接被重置?不明白,能说详细点吗
解决方案四:
我换成socket方式上传,连续上传会爆出550Theprocesscannotaccessthefilebecauseitisbeingusedbyanotherprocess.感觉还是ftpserver没有正常释放文件。难道是iisftpserver配置的问题?怎么修改呢?

时间: 2024-10-21 16:33:56

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

[转]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

.NET将文件复制到ftp提示错误,远程服务器返回错误(550 文件不可用 例如:未找到文件,无法访问文件)

问题描述 //如何上传文件到ftpprivatevoidupFile(stringfileName){stringsql="SelectftpAddress,UserName,PassFromftpInfo";DataTabledt=svData.execQuery(sql).Tables[0];stringaddress="",userName="",pass="";FileInfofi=newFileInfo(fileNa

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

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

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

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

FTP 上传 远程服务器返回错误: (425) 无法打开数据连接。

问题描述 用ftp上传文档的时候,在途中红色框部分报错.ftp被动模式

php ftp上传,下载,删除服务器文件实例

php教程 ftp传送文件到服务器 <?php // 开始 $ret = ftp_nb_get ($my_connection, "test", "README", FTP_BINARY,                       filesize("test")); // 或: $ret = ftp_nb_get ($my_connection, "test", "README", //     

对接Wish接口上传产品时出错。远程服务器返回错误: (504) 网关超时。

问题描述 请求代码程序是在本地,用X-Wall代理连接的Wish.publicstringPostWebReq(stringPostUrl,stringParamData,EncodingDataEncode){stringret=string.Empty;try{byte[]byteArray=DataEncode.GetBytes(ParamData);HttpWebRequestwebReq=(HttpWebRequest)WebRequest.Create(newUri(PostUrl)

c# .net ftp上传下载 解析下载文件数据,然后入库。

问题描述 c# .net ftp上传下载 解析下载文件数据,然后入库. 需求: 把文件上传到ftp然后从ftp下载(这时下载的文件是被人处理后的文件).下载后的文件进行读取验证入库(sqlserver). 目前已经完成的工作:用.net搭建一个框架.(用c#). 还没有完成的工作: ftp上传和下载(ftphelper已经有了). 部分完成的工作:excel和TXT 文件数据的解析,这部分的代码在Vcredit.ExtTrade.BusinessLayer /ComprehensiveBusin