2010-12-12 48 views
2

Selon mes journaux de serveur, le script suivant semble faire deux requêtes Web au lieu d'une. Chaque fois que la deuxième demande est exactement 2 minutes plus tard. Je ne veux qu'une seule demande. Qu'est-ce que je rate?Pourquoi ce script powershell fait-il deux requêtes Web (System.Net.HttpWebRequest)?

# create the web request 
$request = [System.Net.HttpWebRequest]::Create($url) 
# set the timeout to 1 hour 
$request.Timeout = 3600000 

# get the response and stream 
Write-Host "GetResponse() start" 
$response = $request.GetResponse() 
Write-Host "GetResponse() done" 

Write-Host "GetResponseStream() start" 
$stream = $response.GetResponseStream() 
Write-Host "GetResponseStream() end" 

# read the stream 
Write-Host "Read stream start" 
$reader = New-Object IO.StreamReader($stream) 
$html = $reader.ReadToEnd() 
Write-Host "Read stream end" 

# output the html response 
Write-Host $html 

# clean up resources 
$reader.Close() 
$stream.Close() 
$response.Close() 

Write-Host "Done" 
+0

Combien de temps ce script prend-il pour s'exécuter? –

+0

Entre 5 et 15 minutes. – jrummell

+0

Pour éviter les problèmes de délai d'attente dans la page Web demandée, j'ai utilisé ThreadPool pour démarrer un nouveau thread afin de prendre en charge les tâches gourmandes en temps. Le script ps fonctionne maintenant très rapidement et ne fait qu'une seule requête web. Je suis toujours curieux cependant. – jrummell

Répondre

0

Ceci n'est pas une réponse, mais un élément d'aide.

Je copie/passe votre code PowerShell dans PowerGuy, et initialise simplement $ url avec "". Ensuite, je lance WireShark (un renifleur open source) sur mon ordinateur. Vous trouverez, ici sous la capture.

enter image description here

Il montre qu'une seule réponse/réponse. Je supprime les autres images, mais je reçois "Heartbeat" de Google, rien d'autre et j'attends plus de 2 minutes.

Encore une fois, ce n'est pas une réponse, mais un élément de réponse. Vous devez peut-être essayer de démarrer votre script à partir d'une machine virtuelle dans laquelle vous installez WireShark.

Je peux faire plus de tests, si vous me donnez l'URL de votre serveur, le type de serveur et la technologie.

J'espère que ça aide.

JP

+0

Merci pour l'information. L'URL du serveur n'est pas publique mais merci de proposer de la tester. Quand j'ai une chance, je vais essayer à nouveau avec WireShark. – jrummell