2017-05-22 1 views
0



J'utilise VS2008 sur windows 2k3. J'essaie de télécharger un fichier en utilisant webclient. Lors du téléchargement du logo de google je peux le télécharger. Cependant, le code jette l'exception suivante lors du téléchargement à partir d'un autre serveur.
La connexion sous-jacente a été fermée: Une erreur inattendue s'est produite sur un envoi.
Je n'ai pas la possibilité de définir la securityProtocol que j'utilise vieux .net (3.5) .i.e

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

J'ai aussi essayé de courir le code sur les fenêtres 2k8, et il fonctionne très bien là-bas.
Voici l'extrait de code suivant.Webclient lors du téléchargement d'un fichier throws "La connexion sous-jacente a été fermée: Une erreur inattendue s'est produite sur un envoi"

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"); 
      } 

Merci d'avance.

Répondre

0

Il n'y a pas de problème dans votre code. Le problème est le lien que vous téléchargez des données. Google n'autorise pas les appels fréquents à partir de n'importe quelle machine. Il traite les demandes telles que les spams, les appels de certains web araignées/crawlers etc. qui tentent de récupérer des données sur leur site, c'est la raison pour laquelle Google ne vous permet pas pour télécharger des données depuis leur page, peu importe que ce soit une image ou tout ce qui est disponible sur leur page.

Si vous tentez de télécharger des données à partir d'un autre site, vous ne recevrez pas une telle erreur.

+0

Bonjour @M Adeel Khalid: Le code fonctionne lors du téléchargement du fichier à partir du serveur de Google, et ne parvient pas à télécharger lorsqu'il est utilisé sur un autre serveur. – sauraedron

+0

Pouvez-vous expliquer cette ligne un peu "lorsqu'il est utilisé sur un autre serveur"? –

+0

Je ne peux pas vraiment dire quel serveur, mais la connexion au serveur (Say X) utilise TLS 1.2.Juste comme le cas où le logo Googles est publiquement disponible. L'image sur l'autre serveur est également disponible publiquement. La seule différence que je pourrais trouver est la connexion sur google est cryptée en utilisant AES_128_GCM et sur ** X ** la connexion est cryptée en utilisant AES_256_CBC – sauraedron