Azure - 网站 - WebJob - 主动FTP下载

时间:2014-05-08 19:57:52

标签: azure ftp

我正在使用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)"

有没有人对我能做什么有任何建议?

编辑:这不是虚拟机,据我所知,我无法控制防火墙。这是一个标准的网站。 非常感谢你!

1 个答案:

答案 0 :(得分:0)

我遇到同样的问题,我能够通过增加每点的连接限制来解决。默认情况下,它设置为2我增加到10

req.ServicePoint.ConnectionLimit = 10;

如果您遇到超时问题,也请更改属性timeout和readwritetimeout。

以下是与我们类似的案例的链接。

How can I programmatically remove the 2 connection limit in WebClient