问题描述
//根据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配置的问题?怎么修改呢?