Pregunta

Mira el código:

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

Recibo este error interno del servidor HTTP 500 cuando se llama al método UploadData. Pero no puedo ver la descripción del error en ninguna parte del " ex " objeto durante la depuración. ¿Cómo reescribo este código para poder leer la descripción del error?

¿Fue útil?

Solución

Los servidores web a menudo devuelven una página de error con más detalles (ya sea HTML o texto sin formato dependiendo del servidor). Puede obtener esto capturando WebException y leyendo el flujo de respuesta desde su propiedad Response .

Otros consejos

Encontré información útil para depurar de esta manera:

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

Intente capturar una HttpException y llame a GetHtmlErrorMessage ()

Siempre me ha gustado

Debug.WriteLine( ex.ToString() );

Debería usar HttpWebRequest y HttpWebResponse. WebClient es lo más sencillo de usar para hacer una comunicación web básica, pero no proporciona la funcionalidad que necesita. Creo que es mejor hacer esto porque no arrojará una excepción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top