HttpWebRequest.GetResponse () - Welche spezifischen Statuscodes verursachen das Auslösen einer Ausnahme?

9

Ich habe nach einer definitiven Dokumentation gesucht, aber ich hatte nicht viel Glück dabei.

Grundsätzlich - die Frage ist - für welche HTTP-Statuscodes, die vom Server zurückkommen, wird HttpWebRequest.GetResponse () eine WebException generieren, nachdem etwas wie sagen wir einen POST gemacht hat?

Speziell - wird es eine WebException für etwas anderes als Status 200 OK erzeugen? Oder wird es nur eine WebException für say, 400, 404 und 500 generieren (aus Gründen des Arguments).

Ich möchte wissen, da der Server, mit dem ich kommuniziere, alles andere als HTTP 200 OK als Fehlerbedingung zurückgibt - und der Schlüssel ist, kann ich mich darauf verlassen, dass eine WebException für etwas anderes als 200 generiert wird? (Ich habe meinen Code derzeit so geschrieben, dass er den Statuscode für die Rückgabe immer überprüft, um sicherzustellen, dass er 200 OK ist. Falls nicht, sollten Sie geeignete Maßnahmen ergreifen. Es besteht jedoch viel Doppelarbeit und der catch-Block für eine WebException. und ich hoffe, es aufzuräumen ...)

Alle relevanten Links zur Dokumentation würden sehr geschätzt.

Danke!

    
H. Morrow 31.05.2010, 22:07
quelle

3 Antworten

1

Das WebException-System ist ein separates System von HTTP-Fehler-System . Dies liegt hauptsächlich daran, dass die HTTP-Fehler vom Browser oder Client zurückgegeben werden und die WebException vom Server beim Erstellen der Seite ausgelöst wird. Zu dem Zeitpunkt, zu dem ein HTTP-Fehler gefunden wird, wird die Seite an den Client gesendet und Sie werden nichts davon erfahren.

    
MrFox 01.06.2010 12:03
quelle
1

Nachdem Sie die Antwort & amp; WebExceptions abfangen und überprüfen; führt zu doppeltem Code, aber es gibt keine definitive Antwort darauf, ob eine WebException IMMER auftritt, wenn der Status NICHT 200 lautet.

    
H. Morrow 01.06.2010 18:26
quelle
0

Ich denke es wird, aber es klingt wie eine riskante Annahme zu machen. Zum einen machen die MSDN-Dokumente klar, dass GetResponse wird Ausnahmen außer WebException auslösen. Ich kann jedoch aus Erfahrung sagen, dass eine "304 Not-Modified" -Antwort als WebException ausgelöst wird.

All dieses Gerede gibt einen pfiffigen Code Smell aus; Verwenden Sie keine Ausnahmen, um den Ausführungsablauf zu steuern. Sie wären besser dran, Exceptions ordnungsgemäß zu behandeln und die Eigenschaft StatusCode für Ihre zulässigen Werte explizit zu überprüfen.

    
batwad 01.06.2010 12:35
quelle