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-mvc-2 – 为MVC2 AsyncControllers构建单元测试
- asp.net-mvc – 使用AWS .NET SDK进行SNS订阅确认示例
- asp.net-mvc-3 – 在MVC应用程序中将配置设置注入Javascrip
- asp.net – 使用AJAX进行WCF调用
- asp.net-4.0 – Asp.net 4.0:如何在自定义错误页面中获取异
- asp.net – Visual Studio 2010和Visual Studio 2012中的co
- asp.net-mvc-4 – Can Castle Windsor可用于在ASP.NET MVC
- asp.net-mvc – ASP MVC3在actionlink中插入html标签
- asp.net – 我如何使用AJAX来确定用户的会话是否已过期,然后
- asp.net-mvc – 在asp.net mvc中的redirecttoaction中设置查
