119 votes

Le serveur a commis une violation de protocole. Section=ResponseStatusLine ERREUR

J'ai créé un programme, essayé de poster une chaîne sur un site et j'obtiens cette erreur:

"Le serveur a commis une violation de protocole. Section=ResponseStatusLine"

après cette ligne de code:

gResponse = (HttpWebResponse)gRequest.GetResponse(); 

Comment puis-je corriger cette exception?

73voto

Darin Dimitrov Points 528142

Essayer de mettre cela dans votre app/web.config:

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

Si cela ne fonctionne pas, vous pouvez aussi essayer le réglage de l' KeepAlive valeur false à la propriété.

60voto

KvanTTT Points 1060

Parfois, cette erreur se produit lors de l' UserAgent paramètre de la requête est vide (en github.com api dans mon cas).

Le réglage de ce paramètre personnalisé pas une chaîne vide résolu mon problème.

37voto

Tobias Points 1968

Le coupable dans mon cas était de retour d'un No Content réponse, mais la définition d'un corps de la réponse en même temps. Peut cette réponse me rappeler et peut-être d'autres de ne pas retourner un NoContent de la réponse avec un corps nouveau.

Ce comportement est cohérent avec 10.2.5 204 Aucun Contenu de la spécification HTTP, qui dit:

La réponse 204 ne DOIT PAS inclure un message du corps, et est donc toujours résilié par la première ligne vide après les champs d'en-tête.

12voto

marq Points 328

Une autre possibilité: lorsque l'on fait un POST, le serveur répond avec un 100 continuer dans la mauvaise voie.

Cela a résolu le problème pour moi:

request.ServicePoint.Expect100Continue = false;

8voto

Dinis Cruz Points 1042

Une façon de débogage (et assurez-vous que c'est la violation de protocole qui est à l'origine du problème), est d'utiliser Fiddler Http (Proxy Web) et de voir si la même erreur se produit. Si ça ne marche pas (c'est à dire Fiddler géré le problème pour vous), alors vous devriez être en mesure de le réparer à l'aide de la UseUnsafeHeaderParsing drapeau.

Si vous êtes à la recherche d'un moyen pour définir cette valeur par programmation voir les exemples ici: http://o2platform.wordpress.com/2010/10/20/dealing-with-the-server-committed-a-protocol-violation-sectionresponsestatusline/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X