服务器上的FTPWebRequest.GetResponse超时,而不是本地调试

时间:2015-01-08 14:08:27

标签: vb.net azure ftp timeout ftpwebrequest

我制作了一个Azure云服务,它从FTP服务器下载文件,然后将它们上传到Azure存储。 当我调试我的服务时,一切正常,文件上传到存储。一旦我发布了这项服务,我收到了一个错误(并非总是如此,但是尝试了5次尝试的4次):     “System.Net.WebException:操作已超时。” 错误的行号对应于行

Dim response As FtpWebResponse = CType(request.GetResponse, FtpWebResponse)

为什么它适用于本地调试而不是云? 有关信息,没有代理或什么。它似乎以随机的方式工作。 我的代码的一部分:

 'Request
    Dim request As FtpWebRequest = CType(WebRequest.Create(Configuration.Address + suffixPath), FtpWebRequest)
    request.Method = WebRequestMethods.Ftp.DownloadFile

    'Login and pwd
    request.Credentials = New NetworkCredential(Configuration.Login, Configuration.Password)
    request.UsePassive = False
    request.KeepAlive = True
    request.Timeout = Integer.MaxValue
    request.ReadWriteTimeout = Integer.MaxValue

    Try
        Dim response As FtpWebResponse = CType(request.GetResponse, FtpWebResponse)
        Dim stream As Stream = response.GetResponseStream
...

全部

---编辑----

我找到了这篇文章: http://feedback.azure.com/forums/217313-networking-dns-traffic-manager-vpn-vnet/suggestions/3346609-icmp-support-for-azure-websites-roles-cloud-serv

建议为Azure VM添加ICMP流量,服务......

我尝试从Azure云服务到我的FTP服务器进行简单的ping测试,超时时间为30秒,我收到了......立即发生超时错误。

你觉得那些人可以解释我的问题吗? 如果是的话,是否有任何方法可以通过UDP或其他方式从ftp下载文件?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的方法。

Azure VM或服务中的ICMP流量限制就是这样。

所以,我只是使用WebClient对象来下载我的文件。

Dim webclient As New WebClient
webclient.Credentials = New NetworkCredential(login, password)
Dim bytesData As Byte() = webclient.DownloadData(addressOfFTPServer + fileNameToDownload)
Return bytesData

希望这会有所帮助。