2016-10-07 2 views
-1

Je le code suivant pour faire un appel à son tour retourne xml:System.Net.WebException: Le serveur a commis une violation du protocole

private string Send(string url) 
{ 
    try 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 

     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
     { 
      using (Stream stream = response.GetResponseStream()) 
      { 
       using (StreamReader reader = new StreamReader(stream)) 
       { 
        return reader.ReadToEnd(); 
       } 
      } 
     } 
    } 
    catch (WebException ex) 
    { 
     var _status = ex.Status.ToString(); 
     if (ex.Status == WebExceptionStatus.ProtocolError) 
     { 
      _status = ((HttpWebResponse)ex.Response).StatusCode.ToString(); 
     } 
     Trace.WriteLine(_status.ToString()); 
    } 

    return "error"; 
} 

La plupart du temps (pas toujours) Je reçois

System.Net.WebException: le serveur a commis une violation de protocole.

Section = ResponseStatusLine à System.Net.HttpWebRequest.GetResponse()

exception levée.

J'ai ajouté à mon App.config directement dans la section <configuration>:

<system.net> 
    <settings> 
    <httpWebRequest useUnsafeHeaderParsing="true"/> 
    </settings> 
</system.net> 

Mais je continue à obtenir l'erreur.

+4

Quelle est votre cible/URL? http/https? Quel type de serveur est à la destination, juste n'importe quel serveur http? Vous essayez d'utiliser Fiddler pour vérifier quelles sont les étapes de communication. Voir également http://stackoverflow.com/questions/2482715/the-server-committed-a-protocol-violation-section-responsestatusline-error – gerleim

Répondre

0
request.ServicePoint.Expect100Continue = true;