2010-08-15 15 views
0

Je fais une demande d'un serveur Web pour un texte et l'afficher dans une zone de texte en utilisant le code suivant:Pourquoi ma requête VB.Net WebClient.DownloadString dure-t-elle si longtemps?

Dim client As WebClient = New WebClient() 
    Dim theText As String = client.DownloadString("http://192.168.1.110/text.html") 
    Me.TextBox1.Text = theText 

Lorsque je l'exécute la commande « client.DownloadString » prend 6 ou 7 secondes pour terminer (obtient environ 20 octets de texte). Si je fais cette même demande dans un navigateur Web, c'est essentiellement immédiat. J'ai lu quelques publications sur d'autres sites concernant le membre proxy (client.Proxy) qui doit être nul. Étant donné que VB.Net ne supporte pas null, je l'ai mis à "Nothing" mais il n'y a pas eu de changement dans les performances. Des idées sur pourquoi c'est lent?

Mise à jour ... oui, la requête aboutit. Cela prend juste 6 ou 7 secondes. C'est seulement lent la première fois que l'appel est fait. Si je supprime le contenu de la zone de texte et l'exécute à nouveau, il est immédiat. J'ai fait des recherches à ce sujet et j'ai trouvé qu'il s'agissait de définir le proxy par défaut (client.Proxy) qu'il lit à partir des paramètres du navigateur IE. Encore une fois, j'ai vu ce problème abordé dans d'autres publications, mais jamais dans VB.Net et la solution est toujours de définir client.Proxy = Null. Cependant, VB.Net ne prend pas en charge les valeurs NULL. J'ai essayé de le régler sur "Nothing" mais cela n'a pas semblé aider.

+0

ne parvient à la demande? Est-il possible que ce soit un problème côté serveur? –

+0

Est-il possible pour vous d'obtenir un paquet-trace en utilisant wireshark? Si vous pouvez faire cela, vous pouvez savoir si le délai est sur le fil ou s'il se trouve dans la couche .NET. – Gangadhar

Répondre

2

J'ai eu le même problème avec de longs retards sur les demandes d'URL, mais le codage comme suit travaillé pour moi:

 objwebClient = New WebClient() 
     objwebClient.Proxy = Nothing