2009-02-05 9 views
18

Ich versuche, eine Seite wie "http://www.google.com/?q=random" mit der Webrequest-Klasse in vb.net anfordern. wir sind hinter einer Firewall, also müssen wir unsere Anfragen authentifizieren. Ich habe den Authentifizierungsteil durch Hinzufügen meiner Anmeldeinformationen erreicht. Aber sobald das funktioniert, scheint es in eine Umleitungsschleife zu gehen."zu viele automatische Umleitungen wurden versucht" Fehlermeldung bei der Verwendung eines httpWebRequest in .NET

Hat jemand eine Ideen, Kommentare, Vorschläge, warum das ist? Hat jemand anderes dieses Problem erfahren?

Dim loHttp As HttpWebRequest = CType(WebRequest.Create(_url), HttpWebRequest) 
loHttp.Timeout = 10000 
loHttp.Method = "GET" 
loHttp.KeepAlive = True 
loHttp.AllowAutoRedirect = True 
loHttp.PreAuthenticate = True 
Dim _cred1 As NetworkCredential = ... //this is setup 
//snip out this stuff 
loHttp.Credentials = _cc 
loWebResponse = loHttp.GetResponse() 

Antwort

41

Stellen Sie sicher, dass Sie eine Cookie-Container-Konfiguration haben.

CookieContainer cookieContainer = new CookieContainer(); 
loHttp.CookieContainer = cookieContainer; 

Sie speichern wahrscheinlich keine Cookies und werden in einer Weiterleitungsschleife gefangen.

+0

ja, das total ist richtig. Vielen Dank. – tooleb

+0

Das rettete mich nur vor Stunden von Schmerz und Leid! Danke vielmals! : D – Maritim

2

Ich übersetzte das C#, das Darryl an VB lieferte und fügte es vor dem getResponse-Aufruf ein.

0

Vielleicht können Sie für jede Umleitung einzeln aufholen, indem Sie den Standort von der Antwort aufholen und geeignete Cookies verwenden.

7
loHttp.AllowAutoRedirect = true 

Statt dessen haben Sie

loHttp.AllowAutoRedirect = False 

zu verwenden, Fehler zu vermeiden, die Fehler

"Zu viele automatische Umleitung versucht würde"

+0

Das ist falsch. In der [MSDN-Dokumentation] (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.allowautoredirect (v = vs.110) .aspx) für die Eigenschaft "HttpWebRequest.AllowAutoRedirect" heißt es: " Setzen Sie 'AllowAutoRedirect' auf * true *, wenn die Anforderung den HTTP-Umleitungsheadern automatisch an den neuen Speicherort der Ressource folgen soll. Die maximale Anzahl der Umleitungen wird von der Eigenschaft' MaximumAutomaticRedirections' festgelegt. " Der obige Link ist für .NET 4.5, aber die Dokumente sagen das Gleiche bis zurück zu 2.0. – David

+0

In einigen Fällen müssen Sie dies auf "false" setzen, wenn dieser Fehler angezeigt wird. – fgalarraga

+0

Dies scheint zu "funktionieren", da es den automatischen Weiterleitungen nicht folgt, es stoppt nur auf der ersten Seite. Je nachdem, was Sie wollen, wird bestimmt, ob diese Antwort richtig ist. Es bringt dich nicht an den gleichen Ort, an den der Browser dich bringt. – Jim