Сервер совершил нарушение протокола. Раздел = ResponseStatusLine

Пожалуйста, помогите мне. Я исследовал это в течение нескольких часов, пробовал множество различных предложенных исправлений, и я совершенно не понимаю, почему я все еще получаю эту ошибку.

У меня есть веб-страница ASP.NET 4.0 со следующим кодом:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetHref);
// request.KeepAlive = false;
// request.ProtocolVersion = System.Net.HttpVersion.Version10;
// request.ServicePoint.Expect100Continue = false;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Я пробовал каждую комбинацию, которую я могу себе представить, чтобы раскомментировать 3 строки комментариев выше.

У меня есть это в моем web.config:

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

Когда я запускаю Fiddler на своей машине разработки, страница запускается без исключений, и fiddler показывает это сообщение в верхней части возврата:

HTTP/1.0 200 Этот глючный сервер не возвращал заголовки

Без запуска Fiddler я каждый раз получаю сообщение об ошибке в строке request.GetResponse().


person Marvin    schedule 05.09.2012    source источник


Ответы (2)


Что ж, я перепробовал все предложения, которые смог найти здесь, в StackOverflow и в других местах в Интернете, но так и не получил реализацию HttpWebRequest, которая работала бы на меня, поэтому вместо этого я попытался использовать TcpClient после прочтения этого: Как установить useUnsafeHeaderParsing для .NET Compact Framework

Чтобы заставить его работать на меня, мне пришлось изменить эту строку:

 sw.WriteLine(string.Format("GET /{0} HTTP/1.1", pathAndQueryString));

to:

 sw.WriteLine(string.Format("GET /{0} {1}", pathAndQueryString, Environment.NewLine+Environment.NewLine));

И это сработало.

person Marvin    schedule 16.09.2012
comment
Кто-ху! Вы сэкономили мне много работы с Environment.NewLine, спасибо! - person Alex S; 26.06.2013

В asp.net с C# эта проблема связана только с портом.

Многие программы используют порт 80, поэтому вы получаете эту ошибку, поэтому избавьтесь от этой проблемы, никакой настройки не требуется, просто закройте ваш

Skype, программное обеспечение VPN и т. д., и это решит вашу проблему.

В моем случае на самом деле это был не Skype, а программное обеспечение Hotspot Shield (бесплатный VPN), которое работало в фоновом режиме, и это программное обеспечение решило мою проблему.

person UMAR-MOBITSOLUTIONS    schedule 24.12.2013