FTPWebRequest上传文件只会上传两个文件!

时间:2009-10-01 09:47:59

标签: .net ftpwebrequest multifile-uploader

您好我正在使用WebRequest的异步成员将文件上传到IIS ftp服务器。

我可以成功上传两个文件。但是,第三个文件中的BeginGetResponse从不调用我的回调例程!

欢迎任何想法?

感谢,

约翰

2 个答案:

答案 0 :(得分:1)

一些想法:

  • 同步发出请求并查看问题是否消失。如果没有,那么就开始仔细查看第三个文件(是HUUUUUUUUUUGE吗?)
  • 确保在回调处理程序中显式调用FtpWebRequest.EndGetResponse(),然后在响应上调用Close()。否则,您将面临打开连接的风险,可能会遇到客户端,服务器或代理连接限制。
  • 如果您已经在做这些事情,请安装一个像Network Monitor 3.3这样的网络嗅探器,看看线路上究竟发生了什么。你将能够看到任何错误。
  • 如果您发现错误,请将其追踪。如果您从未真正看到第三个请求通过网络,请查看客户端连接限制作为罪魁祸首。如果您看到第三个请求通过线路,但没有响应,请查看服务器问题,例如在M秒内限制来自同一客户端的N个请求 - 并尝试在每个请求之后延迟,以查看是否可以避免这种情况。

答案 1 :(得分:1)

感谢您的回复。我发现我的问题是ServicePoint.Connection.Limit

我将此值增加到4并开始使用Synchronous方法。我的FTP内容现在可以根据需要上传文件。

但是,虽然我可以验证我的文件是否完好无损,但是大部分时间流上的Close()方法都会抛出Web异常,抱怨连接已关闭。

我尝试过KeepAlive,但只减少了大约10%(非常粗糙)转移的例外情况。

我忽略了错误,因为我能够确认发送的字节数= =文件总字节数,但不是很绅士。

我不确定如何绕过这个;我花了几天谷歌搜索,发现有类似问题的人,但没有真正的答案。

暂时我必须继续我的项目的其余部分,因为时间很短,如果你有任何想法如何防止底层连接关闭(我猜它是控制通道下降)我'欣赏你的见解。

约翰。