我制作了一个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
...
全部
---编辑----
建议为Azure VM添加ICMP流量,服务......
我尝试从Azure云服务到我的FTP服务器进行简单的ping测试,超时时间为30秒,我收到了......立即发生超时错误。
你觉得那些人可以解释我的问题吗? 如果是的话,是否有任何方法可以通过UDP或其他方式从ftp下载文件?
答案 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
希望这会有所帮助。