我花了一天时间试图解决这个问题。请帮忙!
我有一个Dropbox文件共享链接,它只有SQL Server Express设置,所以不用担心共享实时链接。
我的浏览器可以正常下载...文件开始在Chrome中下载。
但是,我尝试使用标准的webrequest下载此文件,连接每次都会超时。
请注意,浏览器可以下载文件而不用我登录我自己的保管箱,所以我知道它不是权限。
WebClient.DownloadFile似乎也失败了,所以我想知道地址是否有问题?
我尝试使用'ServerCertificateValidationCallback'验证证书(但它没有调用),我也设置了安全协议
代码如下:
Dim oReq As HttpWebRequest
oReq = HttpWebRequest.Create("https://www.dropbox.com/s/7dtg1d2cq9byccm/en_sql_server_2008_r2_express_edition_with_advanced_services_with_service_pack_2_x64_914054.exe.download?dl=1")
oReq.Timeout = 20000 '20 secs
oReq.Proxy = Nothing 'Specifically setting proxy to null can speed up the request (Src: StackOverflow)
''Setup credentials to avoid 401 error
oReq.UseDefaultCredentials = True
''oReq.PreAuthenticate = True
oReq.Credentials = CredentialCache.DefaultCredentials
'oReq.ContentType = "application/xml"
'oReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
'oReq.ProtocolVersion = HttpVersion.Version10
'oReq.Headers.Add("Accept-Language", "en_US")
'oReq.Method = "GET"
'oReq.KeepAlive = True
'oReq.AllowAutoRedirect = True
'oReq.ReadWriteTimeout = 20000
Try
Using oResp As HttpWebResponse = oReq.GetResponse
End Using
Catch exWebTimeout As System.Net.WebException
End Try
我留下了很多评论,所以你们可以看到我尝试过的东西!
提前致谢!
答案 0 :(得分:0)
我首先想到的是,这是因为文件超过1,000 MB,而你的超时设置为20秒。我相信如果请求在20秒内没有完成,Timeout将会触发,并且此文件肯定不会在那段时间内下载。我会尝试下载一个更小的文件,一个你知道可以在20秒内下载的文件,看看是否有效。