asp.net – 将图像上传到FTP时出错
我在这个函数中遇到了很多不同的问题:
public static bool UploadToFTP(string strFileName,string strFolderName) { bool isUploaded = false; string strFilename = string.Empty; string strFtpURI = string.Empty; string strFtpUserId = string.Empty; string strFtpPassword = string.Empty; byte[] buffer = null; FileInfo oFileInfo = null; FileStream oFileStream = null; FtpWebRequest oFtpWebRequest = null; try { strFilename = strFileName; oFileInfo = new FileInfo(strFilename); strFtpURI = Constants.FtpUri; strFtpUserId = Constants.FtpUserID; strFtpPassword = Constants.FtpPassword; oFtpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFtpURI + "/" + strFolderName + "/" + oFileInfo.Name)); oFtpWebRequest.Credentials = new NetworkCredential(strFtpUserId,strFtpPassword); oFtpWebRequest.Proxy = null; oFtpWebRequest.KeepAlive = false; oFtpWebRequest.Method = WebRequestMethods.Ftp.UploadFile; oFtpWebRequest.UseBinary = true; oFtpWebRequest.ContentLength = oFileInfo.Length; int iBufferLength = 2084; buffer = new byte[iBufferLength]; int iContentLength = 0; oFileStream = oFileInfo.OpenRead(); try { iContentLength = oFileStream.Read(buffer,iBufferLength); using (Stream oStream = oFtpWebRequest.GetRequestStream()) { while (iContentLength != 0) { oStream.Write(buffer,iContentLength); iContentLength = oFileStream.Read(buffer,iBufferLength); } isUploaded = true; FtpUpload.TotalKBFilesUploaded = FtpUpload.TotalKBFilesUploaded + (int)(oFileInfo.Length / 1000); } } catch (Exception ex) { } finally { if (oFtpWebRequest != null) { oFtpWebRequest.Abort(); oFtpWebRequest = null; } if (buffer != null) { buffer = null; } if (oFileStream != null) { oFileStream.Close(); oFileStream.Dispose(); } } } catch (Exception ex) { } finally { oFileInfo = null; } return isUploaded; } 这是将1000个图像上传到FTP,这种方法以多线程方式调用. 不同的错误是: ================================================== ===== 消息:操作已超时 错误跟踪:在System.Net.FtpWebRequest.GetRequestStream()处的System.Net.FtpWebRequest.CheckError()处 ================================================== ===== 错误消息:无法连接到远程服务器 错误跟踪:在System.Net.FtpWebRequest.GetRequestStream()处的System.Net.FtpWebRequest.CheckError()处 ================================================== ===== 错误消息:基础连接已关闭:接收时发生意外错误. 错误跟踪:System.Net上的System.Net.FtpWebRequest.CheckError()位于System.Net.FtpWebRequest.FinpRequestStage(RequestStage阶段)的System.Net.CommandStream.Abort(Exception e)上的System.Net.FtpWebRequest.SyncRequestCallback(Object obj)处System.Net.FtpWebRequest.GetRequestStream() ================================================== ===== 错误消息:无法将数据写入传输连接:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机无法响应而建立的连接失败. 错误跟踪:System.Net.Sockets.NetTream.Write(Byte []缓冲区,Int32偏移量,Int32大小)在System.Net.FtpDataStream.Write(Byte []缓冲区,Int32大小)处 这些是来自我从LOG文件中检索的相同方法的一些错误. 什么可能导致这个?或者我需要提供更多细节? 解决方法
达到超时时遇到以下异常:
正如msdn文档中所解释的那样,超时的默认值是无限的,但msdn文档包含一个错误: 实际上,默认值为100000毫秒(1分40秒),因此您可以使用以下函数将值Timeout声明为无限:oFtpWebRequest.Timeout = -1; http://www.sidesofmarch.com/index.php/archive/2012/04/06/damn-the-documentation-ftpwebrequest-timeout-default-value-is-not-infinite/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – 使用OWIN SelfHost和Windows身份验证的
- asp.net-web-api – 在身份验证过滤器中的ChallengeAsync方
- asp.net-mvc – ASP.Net MVC异常记录与错误处理相结合
- asp.net-mvc – ASP.NET MVC 1和3之间的区别
- 从Bitmap对象将图像渲染到ASP.NET MVC网页上
- asp.net-mvc – MissingMethodException:“此对象没有无参
- asp.net-web-api – 在ASP.NET WebAPI OData中返回子元素
- .net – 是否必须在自定义实现中覆盖默认的成员资格提供程序
- asp.net-mvc – 存在哪些ASP.NET MVC示例项目?
- asp.net-mvc – Web API错误:’ObjectContent`1’类型无法
- asp.net mvc 之旅 —— 第五站 从源码中分析asp
- 将在公共计算机或自助服务终端上使用的ASP.Net W
- 一个IIS WebSite可以托管不同ASP.NET版本的多个W
- asp.net – 使用主题的css文件需要在页面上的头控
- asp.net – 名称空间“CrystalDecisions.Web”中
- iis – w3wp.exe占用内存
- asp.net – 什么时候Request.Form [“name”]为n
- 需要用户登录的UnitTest ASP.NET应用程序
- asp.net-mvc – ASP.NET MVC 2 Beta:日期时间转
- asp.net-mvc – 如何使用ASP.NET MVC将某些HTML元