我正在使用Windows Azure网站和Web作业。
我有一个控制台应用程序,我用它每晚下载一个FTP文件。他们最近从被动切换到主动FTP。我对此没有任何控制权。
附加的代码正在为被动工作,并且在我的计算机上工作。但是,当我将其添加到Azure上的webjob时,它不起作用。
在此代码中,我可以获取内容长度,因此我正确登录并且我有正确的URL。
Dim request As FtpWebRequest = DirectCast(FtpWebRequest.Create(strTempFTPUrl), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.GetFileSize
Dim nc As New NetworkCredential(FTPUserName, FTPPassword)
request.Credentials = nc
request.UseBinary = True
request.UsePassive = False
request.KeepAlive = True
request.Proxy = Nothing
' Get the result (size)
Dim resp As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
Dim contLen As Int64 = resp.ContentLength
' and now download the file
request = DirectCast(FtpWebRequest.Create(strTempFTPUrl), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.DownloadFile
request.Credentials = nc
request.UseBinary = True
request.UsePassive = False
request.KeepAlive = True
request.Proxy = Nothing
resp = DirectCast(request.GetResponse(), FtpWebResponse)
我收到的错误是:
底层连接已关闭:接收时发生意外错误。这发生在第二个" resp = DirectCast(request.GetResponse(),FtpWebResponse)"
有没有人对我能做什么有任何建议?
编辑:这不是虚拟机,据我所知,我无法控制防火墙。这是一个标准的网站。 非常感谢你!
答案 0 :(得分:0)
我遇到同样的问题,我能够通过增加每点的连接限制来解决。默认情况下,它设置为2我增加到10
req.ServicePoint.ConnectionLimit = 10;
如果您遇到超时问题,也请更改属性timeout和readwritetimeout。
以下是与我们类似的案例的链接。
How can I programmatically remove the 2 connection limit in WebClient