30 Stimmen

Holen Sie WebClient-Fehler als Zeichenfolge

Ich habe ein Diagnosewerkzeug, das einen Webservice testet.

Ich möchte, dass das Tool Probleme meldet, daher habe ich einen Service mit einem Problem im Vertrag bereitgestellt, um ihn zu testen.

Wenn ich darauf zugreife, erhalte ich eine Seite mit einer sehr beschreibenden Nachricht wie:

Ein ExceptionDetail, wahrscheinlich erstellt durch IncludeExceptionDetailInFaults=true, dessen Wert ist: System.InvalidOperationException: Eine Ausnahme wurde bei einem Aufruf einer WSDL-Exporterweiterung ausgelöst:
System.ServiceModel.Description.DataContractSerializerOperationBehavior Vertrag: DataContract für Typ XXX kann nicht zum DataContractSet hinzugefügt werden, da der Typ XXX mit dem gleichen DataContract-Namen XXX im Namespace XXX bereits vorhanden ist und die Verträge nicht äquivalent sind usw..

Was ich möchte, ist in der Lage zu sein, Folgendes zu aufrufen:

myErrorMsg = WebClient.DownloadString("MyBadService.svc");

und diese nützliche Fehlermeldung als Zeichenkette zu erhalten, jedoch erhalte ich die folgende WebException:

Der entfernte Server hat einen Fehler zurückgegeben: (500) Interner Serverfehler.

Wie kann ich dieselbe Fehlermeldung, die ich im Browser erhalten habe, als Zeichenkette zurückbekommen, ohne eine Ausnahme zu erhalten?

Danke.

73voto

ccellar Punkte 10256

Du musst die Ausnahme abfangen und die Antwort lesen.

catch (WebException exception)
{
  string responseText;

  var responseStream = exception.Response?.GetResponseStream();

  if (responseStream != null)
  {
      using (var reader = new StreamReader(responseStream))
      {
         responseText = reader.ReadToEnd();
      }
  }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X