Wie Sie eine ASP.NET interner Serverfehler Beschreibung mit .NET zu lesen?
Frage
Siehe den Code:
using (var client = new WebClient())
{
try
{
var bytesReceived = client.UploadData("http://localhost", bytesToPost);
var response = client.Encoding.GetString(bytesReceived);
}
catch (Exception ex)
{
}
}
Ich erhalte dieses HTTP 500 Interner Serverfehler, wenn die Upload Methode aufgerufen wird. Aber ich kann nicht die Fehlerbeschreibung überall in der „ex“ Objekt sehen während des Debuggens. Wie kann ich diesen Code neu schreiben, so kann ich die Fehlerbeschreibung lesen?
Lösung
Webserver zurückkehrt oft eine Fehlerseite mit weiteren Informationen (HTML oder Nur-Text je nach Server). Sie können dies greifen durch WebException
Fang und den Antwortstrom aus seiner Response
Eigenschaft zu lesen.
Andere Tipps
Ich fand nützliche Informationen für das Debuggen auf diese Weise:
catch (WebException ex)
{
HttpWebResponse httpWebResponse = (HttpWebResponse)ex.Response;
String details = "NONE";
String statusCode = "NONE";
if (httpWebResponse != null)
{
details = httpWebResponse.StatusDescription;
statusCode = httpWebResponse.StatusCode.ToString();
}
Response.Clear();
Response.Write(ex.Message);
Response.Write("<BR />");
Response.Write(ex.Status);
Response.Write("<BR />");
Response.Write(statusCode);
Response.Write("<BR />");
Response.Write(details);
Response.Write("<BR />");
Response.Write(ex);
Response.Write("<BR />");
}
eine Httpexception fangen und rufen GetHtmlErrorMessage () auf sie
Ich habe immer gern
Debug.WriteLine( ex.ToString() );
Sie sollten verwenden HttpWebRequest und HttpWebResponse. WebClient ist die einfachste Sache zu nutzen grundlegende Web-Kommunikation zu tun, aber es bietet nicht die Funktionalität, die Sie benötigen. Ich denke, es ist besser, dies zu tun, weil es nicht eine Ausnahme aus.