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?
Vous devez vous connecter pour publier un commentaire.
Essayer de mettre cela dans votre app/web.config:
Si cela ne fonctionne pas, vous pouvez aussi essayer le réglage de la
KeepAlive
valeur false à la propriété.useUnsafeHeaderParsing
à true. Maintenant, je suis ArgumetOutOfRangeException:System.Net.Http.HttpResponseMessage..ctor(HttpStatusCode statusCode)
Parfois cette erreur se produit lorsque
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.
WebClient
ici stackoverflow.com/a/11841680/4795214HttpClient
ajouter:client.DefaultRequestHeaders.Add("User-Agent", "Anything");
ligne pour les résoudre.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 unNoContent
réponse avec un corps jamais de nouveau.Ce comportement est cohérent avec 10.2.5 204 Aucun Contenu de la Spécification HTTP qui dit:
The server committed a protocol violation. Section=ResponseStatusLine
d'erreur lors de l'utilisation de WebApi de retour personnaliséNoContent()
réponse qui a été l'envoi deNo Content
dans la réponse pour une étrange raison! Une fois que j'ai pris que le problème a disparu 🙂someContent
dereturn Request.CreateResponse(HttpStatusCode.NoContent, someContent);
+1Une 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:
Ce qui se passait pour moi quand j'avais Skype en cours d'exécution sur ma machine locale. Dès que j'ai fermé que l'exception s'en alla.
Idée de courtoisie de cette page
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/
De nombreuses solutions de parler d'une solution de contournement, mais pas sur la cause réelle de l'erreur.
Une cause possible de cette erreur est si le serveur utilise un encodage autre que
ASCII
ouISO-8859-1
à la sortie de l'en-tête de réponse de la section. La raison d'utiliser desISO-8859-1
serait si leResponse-Phrase
contient des caractères latins étendus.Une autre cause possible de cette erreur est si un serveur web utilise
UTF-8
que les sorties de l'ordre des octets de marqueur (BOM). Par exemple, la valeur par défaut de la constanteEncoding.UTF8
sorties de la NOMENCLATURE, et il est facile de l'oublier. Les pages web fonctionne correctement dans Firefox et Chrome, maisHttpWebRequest
sera de la bombe :). Une solution rapide est de changer le serveur web pour utiliser l'encodage UTF-8 qui n'est pas sortie de la NOMENCLATURE, par exemplenew UTF8Encoding(false)
(qui est OK aussi longtemps que leResponse-Phrase
ne contient que des caractères ASCII, mais vraiment, il devrait utiliserASCII
ouISO-8859-1
pour les en-têtes, puisUTF-8
ou un autre encodage pour la réponse).Réglage s'attendent à 100 poursuivre pour faux et la réduction de la prise de temps d'inactivité de deux secondes résolu le problème pour moi
Skype a été la principale cause de mon problème:
Cette erreur se produit généralement lorsque vous avez mis en place Visual Studio pour le débogage d'une application web existante cours d'exécution dans IIS plutôt que par le haut dans ASP.NET de débogage du serveur web. IIS par défaut écoute les requêtes web sur le port 80. Dans ce cas, une autre application est déjà en écoute les requêtes sur le port 80. Généralement, l'application qui pose problème est de Skype, qui, par défaut, prend le relais à l'écoute sur les ports 80 et 443 lors de l'installation. Skype est déjà occupent le port 80. Si IIS est incapable de démarrer.
Pour résoudre le problème, suivez les étapes suivantes:
Skype -> Outils> Options -> Avancé> Connexion:
Décochez la case "Utiliser les ports 80 et 443 comme solution de rechange pour les connexions entrantes".
Et comme l'a souligné ci-dessous effectuer une réinitialisation des services internet une fois fait.
J'ai essayé d'accéder à la Dernière.fm API Rest de derrière un proxy et a obtenu cette fameuse erreur.
Après avoir essayé quelques solutions de contournement, seules ces deux travaillé pour moi
et
Aucune des solutions n'a fonctionné pour moi, j'ai donc dû utiliser un client web au lieu d'un HttpWebRequest et la question n'était plus.
J'avais besoin d'utiliser un CookieContainer, j'ai donc utilisé la solution posté par Pavel Savara dans ce fil - À l'aide de CookieContainer avec classe WebClient
seulement supprimer les "protégés" de cette ligne:
private readonly CookieContainer container = new CookieContainer();
Une cause probable de ce problème est de Découverte Automatique de Proxy Web Protocole WPAD () de configuration sur le réseau. La requête HTTP seront en toute transparence envoyé à un proxy qui peut renvoyer une réponse que le client n'accepte pas ou n'est pas configuré pour accepter. Avant de piratage de votre code de bits, vérifiez que le protocole WPAD n'est pas en jeu, en particulier si cette juste "a commencé" out of the blue.
Mon problème est que j'ai appelé
https
point de terminaison avechttp
.Première chose que nous avons essayé était pour désactiver la compression de contenu dynamique pour IIS , qui a résolu les erreurs, mais l'erreur n'était pas causé côté serveur et un seul client a été touché par ce.
Sur le côté client, nous désinstallé les clients VPN, réinitialiser les paramètres d'internet, puis réinstallé les clients VPN. L'erreur peut aussi être causée par la précédente antivirus qui avaient pare-feu. Ensuite, nous avons permis la compression de contenu dynamique et maintenant il fonctionne comme avant.
Erreur s'est glissée dans la coutume de l'application qui se connecte à un service web et également à TFS.
Dans mon cas, IIS n'ont pas les autorisations nécessaires pour accéder aux ASPX chemin.
J'ai donné de l'IIS de l'utilisateur des autorisations pour le répertoire correspondant et tout allait bien.
Voir votre code et de trouver si vous êtes à la définition de certains d'en-tête avec la valeur NULL ou vide.
J'ai commencé à avoir cette erreur de mon php, JSON/REST services
J'ai commencé à faire l'erreur de relativley rare POST uploads après j'ai ajouté
ob_start("ob_gzhandler")
le plus souvent accessibles OBTENIR script phpJe suis en mesure d'utiliser seulement
ob_start()
, et tout va bien.