Domanda

Ecco il codice:

using (var client = new WebClient())
{
    try
    {
        var bytesReceived = client.UploadData("http://localhost", bytesToPost);
        var response = client.Encoding.GetString(bytesReceived);
    }
    catch (Exception ex)
    {
    }
}

Ricevo questo errore del server interno HTTP 500 quando viene chiamato il metodo UploadData. Ma non riesco a vedere la descrizione dell'errore da nessuna parte in " ex " oggetto durante il debug. Come riscrivo questo codice per poter leggere la descrizione dell'errore?

È stato utile?

Soluzione

I server Web spesso restituiscono una pagina di errore con maggiori dettagli (HTML o testo normale a seconda del server). Puoi prenderlo catturando WebException e leggendo il flusso di risposta dalla sua proprietà Response .

Altri suggerimenti

Ho trovato informazioni utili per il debug in questo modo:

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

Prova a catturare un HttpException e chiama GetHtmlErrorMessage () su di esso

Mi è sempre piaciuto

Debug.WriteLine( ex.ToString() );

È necessario utilizzare HttpWebRequest e HttpWebResponse. WebClient è la cosa più semplice da utilizzare per effettuare comunicazioni Web di base, ma non fornisce le funzionalità necessarie. Penso che sia meglio farlo perché non genererà un'eccezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top