2010-05-08 17 views
9

L'ouverture d'une page publique à partir du navigateur fonctionne correctement.WebClient - Le serveur distant a renvoyé une erreur: (403) Interdit

Téléchargement de la même page avec WebClient throws - (403) Interdit.

Que se passe-t-il ici?

Voici par exemple copier/coller rapide (utilisé sur l'application de la console) à la page spécifique sur le Web:

try 
{ 
    WebClient webClient = new WebClient(); 
    string content = webClient.DownloadString("http://he.wikisource.org/wiki/%D7%A9%D7%95%D7%9C%D7%97%D7%9F_%D7%A2%D7%A8%D7%95%D7%9A_%D7%90%D7%95%D7%A8%D7%97_%D7%97%D7%99%D7%99%D7%9D_%D7%90_%D7%90"); 
} 
catch (Exception ex) 
{ 
    throw; 
} 
+0

à quelle fréquence vous appelez cette URL? vous pourriez être étranglé. – Nix

+0

Pas beaucoup je pense, peu de fois des navigateurs avant d'essayer avec webclient. J'ai téléchargé d'autres pages du même site beaucoup plus maintenant et ils fonctionnent bien à chaque fois. Donc, il semble que cette page est seulement erreur de lancement ?! – dzolnjan

+1

La page peut regarder l'en-tête de l'agent utilisateur et vous renvoyer parce que vous n'en avez pas fourni. –

Répondre

38

J'ai juste essayé avec Fiddler en cours d'exécution pour voir la réponse et renvoie l'avis suivant avec le code d'état.

Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.

Cela fonctionne.

WebClient webClient = new WebClient(); 
    webClient.Headers.Add("user-agent", "Only a test!"); 

    string content = webClient.DownloadString("http://he.wikisource.org/wiki/%D7%A9%D7%95%D7%9C%D7%97%D7%9F_%D7%A2%D7%A8%D7%95%D7%9A_%D7%90%D7%95%D7%A8%D7%97_%D7%97%D7%99%D7%99%D7%9D_%D7%90_%D7%90"); 
+0

Oui cela fonctionne, merci. – dzolnjan

+1

Merci pour ça - ça ne l'a pas résolu pour moi, mais tu m'as mis sur une piste. Comme un mot d'avertissement à ceux qui suivent, vérifiez d'abord votre propre implémentation de sécurité. J'avais oublié d'accorder à mon utilisateur le droit d'effectuer des téléchargements et recevais (correctement) un message 403. Rien à voir avec le serveur IIS, le client, l'agent utilisateur ou quoi que ce soit. –

+0

@TheSenator merci, dans mon cas, c'était les restrictions d'adresse IP IIS. – joym8

Questions connexes