Detect-HTTP-Proxy-Fehler für WebRequest
-
16-09-2019 - |
Frage
Wie erkennen, dass ein WebRequest konnte aufgrund eines Web-Proxy-Fehler und kein Ziel-Web-Server-Fehler?
try
{
var request = (HttpWebRequest)WebRequest.Create("http://www.example.com");
request.Proxy = new WebProxy("localhost");
var response = request.GetResponse();
return response.GetResponseStream();
}
catch(WebException webex)
{
//Detect proxy failure
}
Lösung
Es ist schwierig. Hier sind einige Vorschläge:
- Die
webex.Response.ResponseUri
Eigenschaft enthält den URI des Proxy-Servers anstelle des Servers zu kontaktieren versuchten. - Die
webex.Response.StatusCode
Eigenschaft ist eine, die immer bezieht sich auf ein Proxy-Problem, z.B.ProxyAuthenticationRequired
. Leider sind die meisten Zustände entweder an einen Proxy-Fehler oder einen Serverfehler beziehen könnte. - Die
webex.Response.Headers
Sammlung enthält Nicht-Standard-Einträge, die Sie erkennen, wie von Ihrem Proxy-Server generiert wird. Zum Beispiel gibt den Squid-Proxy den Header"X-Squid-Error"
mit seinem eigenen proprietären Satz von Status. - Der
webex.Response.ResponseStream
Strom enthält eine HTML oder Nur-Text-Fehlermeldung in einem Format, das Sie erkennen, wie von Ihrem Proxy-Server generiert wird. Sie könnten testen, um zu sehen, ob es die URI des Proxy-Servers enthält.
In Ihrem catch-Block, stellen Sie sicher, dass Sie alle Einzelheiten des WebException
Objekt einzuloggen, einschließlich aller oben genannten Eigenschaften. Anschließend können Sie die Protokolldaten analysieren und einen genauen Test für die Proxy-Fehler entwickeln.
Andere Tipps
Ich glaube, Sie InvalidOperationException fangen konnte und dann die Nachricht prüfen „Proxy“.
Die Nachricht würde sagen:
Der Proxy-Name nicht aufgelöst werden kann: 'localhost'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow