2014-04-29 9 views
5

Ich habe ein Skript, das Ressourcen löscht und neue erstellt. Hin und wieder läuft es ab und ich kann nicht verstehen warum. Es scheint zu passieren, wenn ich das Skript mehrere Male ausführen, aber ich konnte kein bestimmtes Muster erhalten. Ich habe festgestellt, dass mein Server die Nachricht noch nicht empfangen hat, da noch keine Protokollierung für die Anfrage vorhanden ist.Invoke-RestMethod: Die Operation hat eine Zeitüberschreitung

$old_values = Invoke-RestMethod -Uri $uri -Method Get 

foreach($old_value in $old_values.result) { 
    Invoke-RestMethod -Uri "$uri&key=$old_value.id" -Method Delete 
} 

$new_value = Invoke-RestMethod -Uri "$uri" -Body "{}" -ContentType application/json -Method Post 

Interessante Notiz, erhalte ich gelegentlich Timeouts, wenn ich die Invoke-RestMethod laufen direkt von Powershell nennt. Ich habe sie auch mit Fiddler gespielt und habe keine Zeitüberschreitungen.

[Bearbeiten] Ich habe die Verbindungen mit Netstat überprüft. Während die Befehle hängen, werden sie als ESTABLISHED aufgelistet. Aber ich sehe TIME_WAIT-Verbindungen immer auf meinem Server aufgelistet. Gibt es eine Chance, dass meine Verbindungen nicht geschlossen werden?

+1

Sie das gesehen? Könnte es verwandt sein? http://connect.microsoft.com/PowerShell/feedback/details/836732/tcp-connection-hanging-in-close-wait-when-using-invoke-restmethod-with-put-oder-delete –

Antwort

4

Der Link David Brabant oben gepostet enthält diese Abhilfe, die das Problem für mich gelöst:

$r = (Invoke-WebRequest -Uri $uri ` 
    -Method 'POST' ` 
    -ContentType 'application/json' ` 
    -Body '{}' ` 
    ).Content | ConvertFrom-Json 
+0

Dieser Fehler wurde behoben in Powershell 5.0 –

0

ich Allanrbo Antwort auf noch Timeout nach 3 oder 4 Läufe gefunden.

Ich habe folgendes statt:

powershell "(Invoke-RestMethod -Method 'Delete' -Uri '$uri').Content" 
Verwandte Themen