2017-05-22 100 views
0



我在Windows 2k3上使用VS2008。我正嘗試使用webclient下載文件。當下載谷歌的標誌,我可以下載它。但是,從其他服務器下載時,代碼會引發以下異常。
底層連接已關閉:發送發生意外錯誤
我沒有,因爲我使用舊的.NET(3.5)設置securityProtocol的選項.i.e

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

我也試過在Windows上運行2K8的代碼,它工作正常那裏。
以下是代碼片段。Webclient下載文件拋出「底層連接已關閉:發送意外錯誤」

using (var client = new WebClient()) 
      { 
       client.UseDefaultCredentials = true; 
       client.Proxy = WebRequest.GetSystemWebProxy(); 
       client.DownloadFile("https://www.google.co.in/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png", @"D:\dwimg.png"); 
      } 

在此先感謝您。

回答

0

你的代碼沒有問題。問題是您要從中下載數據的鏈接。谷歌不允許來自任何機器的頻繁呼叫,它將這種請求視爲垃圾郵件,來自某些網絡蜘蛛/爬蟲等的呼叫。誰試圖從他們的網站獲取數據,這是谷歌不允許你的原因之一從他們的頁面下載數據,無論它是一個圖像還是其頁面上可用的任何內容。

試圖從其他網站下載數據不會給你這樣的錯誤。

+0

Hi @M Adeel Khalid:代碼在從Google服務器下載文件時起作用,在其他服務器上使用時無法下載。 – sauraedron

+0

你可以解釋這一行有點「當在其他服務器上使用」? –

+0

我無法確定哪臺服務器,但與服務器的連接(Say X)使用TLS 1.2。就像Googles徽標公開可用的情況一樣。另一臺服務器上的映像也是公開可用的。唯一的區別是我可以找到的是谷歌上的連接使用AES_128_GCM加密並在** X **上使用AES_256_CBC加密連接 – sauraedron

相關問題