Pergunta

Eis o código:

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

Estou recebendo este HTTP 500 erro interno do servidor quando o método UploadData é chamado. Mas eu não posso ver a descrição do erro em qualquer lugar do objeto "ex" durante a depuração. Como posso reescrever este código para que eu possa ler a descrição do erro?

Foi útil?

Solução

Servidores da Web muitas vezes voltar uma página de erro com mais detalhes (HTML ou texto simples dependendo do servidor). Você pode agarrar esta travando WebException e ler o fluxo de resposta de sua propriedade Response.

Outras dicas

Eu encontrei informações úteis para a depuração desta maneira:

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

Tente pegar um HttpException e chamar GetHtmlErrorMessage () sobre ele

Eu sempre gostei

Debug.WriteLine( ex.ToString() );

Você deve usar HttpWebRequest e HttpWebResponse. WebClient é a coisa mais simples de usar para fazer uma comunicação básica web, mas não fornece a funcionalidade que você precisa. Eu acho que é melhor de fazer isso, porque não vai lançar uma exceção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top