Question

Voici le code:

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

Je reçois cette erreur de serveur interne HTTP 500 lorsque la méthode UploadData est appelée. Mais je ne vois la description de l'erreur nulle part dans le message "ex". objet pendant le débogage. Comment réécrire ce code pour pouvoir lire la description de l'erreur?

Était-ce utile?

La solution

Les serveurs Web renvoient souvent une page d'erreur avec plus de détails (HTML ou texte brut, selon le serveur). Vous pouvez saisir cela en interceptant WebException et en lisant le flux de réponses à partir de sa propriété Response .

Autres conseils

J'ai trouvé des informations utiles pour le débogage de cette façon:

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

Essayez d'attraper une exception HttpException et appelez-y GetHtmlErrorMessage ()

J'ai toujours aimé

Debug.WriteLine( ex.ToString() );

Vous devez utiliser HttpWebRequest et HttpWebResponse. WebClient est la méthode la plus simple à utiliser pour la communication Web de base, mais elle ne fournit pas les fonctionnalités dont vous avez besoin. Je pense qu'il vaut mieux le faire car cela ne jettera pas une exception.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top