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?

War es hilfreich?

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 />");
        }
Versuchen

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top