kob*_*bra 5 .net c# ftp ftpwebrequest
我正在编写一个代码来将zip文件上传到ftp服务器.令人惊讶的是,代码适用于小文件,但对于较大的文件,我最终会遇到问题.我正在使用Stream对象,我注意到我的代码在尝试关闭Stream时遇到困难(仅适用于大文件).如果我不关闭Stream(即使是大文件),代码运行正常.有没有人看到为什么会发生这种情况的任何逻辑.如果我不关闭流,那么将来我可能会遇到问题.
代码提取:
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(@"ftp://" + ftpServerIP + @"/" + fileInf.Name));
Stream strm = reqFTP.GetRequestStream();
Run Code Online (Sandbox Code Playgroud)
代码停止响应(当上传文件很大时):
strm.Close();
Run Code Online (Sandbox Code Playgroud)
没有例外,因为这部分属于try-catch.
我不知道如何获得堆栈跟踪.
我不清楚你在关闭流时会得到什么错误,但在我们的应用程序中,我们会做很多大文件上传(视频和图像).以下是我们写入FTP流的方式:
request.KeepAlive = false; // This eliminated some of our stream closing problems
using (Stream stream = request.GetRequestStream())
{
stream.Write(file.Data, 0, file.Data.Length);
}
Run Code Online (Sandbox Code Playgroud)
我认为做一个using块会Close自己有效地进行调用,但也许它还执行其他必要的清理.另请注意,我关闭了FTP keepalive,这导致我们上传到的一些第三方FTP站点出现问题.
你真的应该看看你收到的具体例外,而不是吞下所有例外.错误消息最有可能告诉您哪里出错了.我们遇到的最常见问题与主动模式和被动模式以及Keepalive有关.
编辑:
为了发现当我们遇到有关CDN的FTP问题时会发生什么事情(而且它的发生频率太高),我们有时不得不在我们的应用程序中启用跟踪.有关如何启用跟踪的详细信息,请参阅此链接.另一个选择是使用Wireshark之类的工具来嗅探应用程序和FTP服务器之间的对话.如果你能看到FTP协议中发生了什么,你将有更好的机会解决这个问题.
| 归档时间: |
|
| 查看次数: |
4394 次 |
| 最近记录: |