Ich muss Code schreiben, um die zwei verschiedenen Typen von Fehlern zu behandeln, die auftreten können, nachdem eine HTTP-Anfrage mit einem HttpClient
-Objekt, das mit .Net Framework 4.5 geliefert wird, ausgegeben wird:
Verbindungsfehler, wenn der Server aufgrund von Verbindungsproblemen nicht erreichbar ist - z. keine Verbindung verfügbar, Timeout Ablauf, falsche Netzwerkeinstellungen etc.
Obwohl technisch kein Fehler, der Fall, wenn die Anfrage erfolgreich den Server erreicht, aber der Server mit einem HTTP-Fehlerstatuscode antwortet (z. B. 404, 400, 409, 500 usw.)
Es ist sehr wichtig, dass ein Fehlertyp nicht wie der andere behandelt wird. Welches ist der richtige und zuverlässige Weg dies zu tun? Die EnsureSuccessStatusCode()
-Methode scheint zumindest beim zweiten Fall zu helfen, aber die Dokumentation ist enttäuschend knapp.
Nach einigen manuellen Tests ist die gute Nachricht, dass es eine zuverlässige Methode gibt, um die zwei Arten von Fehlern zu trennen, aber die schlechte Nachricht ist, dass sie nicht auf allen Plattformen gleich ist - zumindest nicht auf Windows Phone 8 Bei den Projekttypen .Net Framework 4.5 Full und Windows Store App funktioniert der folgende Code:
%Vor% Leider werden unter Windows Phone 8 beide Typen unter der Bedingung if
behandelt: IsSuccessStatusCode
wird auf false gesetzt und keine HttpRequestException
(oder irgendeine andere Ausnahme) wird ausgelöst. Für WP8 verwende ich die Implementierung der portablen Klassenbibliothek von HttpClient
( Ссылка ), fragte ich sie, ob diese Inkonsistenz behoben werden kann, hoffentlich kann und wird es bald sein.
Tags und Links .net c# http dotnet-httpclient http-status-codes