Подтвердить что ты не робот

HttpWebRequestError: сервер совершил нарушение протокола. Раздел = ResponseHeader Detail = CR должен сопровождаться LF

Я создал образец приложения asp.net и попытаюсь очистить данные с моего сервера с помощью httpwebrequest. Но иногда я получал эту ошибку выше. Я сделал некоторые поиски в google, но все говорят, что вы должны добавить свойство "<httpWebRequest useUnsafeHeaderParsing="true" />" в web.config.

У этого свойства есть слово "UNSAFE", поэтому я слишком беспокоюсь об этом. Я не могу добавить это в настройку моего сайта. Есть ли другой способ прочитать ответ моего URL-адреса. Пожалуйста, дайте мне знать, как возможно ли это без "<httpWebRequest useUnsafeHeaderParsing="true" />"

Спасибо заранее, Лакшмилальная менария

4b9b3361

Ответ 1

Это, безусловно, проблема с сервером - сервер не выполняет спецификацию HTTP, а клиент .NET отмечает это как потенциальную проблему. "Небезопасно", я думаю, несколько неправильно. Здесь нет большой проблемы с безопасностью, только несоблюдение RFC, которое плохо, но, к сожалению, не редкость.

Итак, как вы нашли в Google, способ решить эту проблему - применить следующее изменение конфигурации:

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

Ответ 2

Один из способов отладить это (и убедиться, что это нарушение протокола, вызывающего проблему), - использовать Fiddler (Http Web Proxy) и посмотреть, происходит ли такая же ошибка. Если это не так (то есть Fiddler обработал проблему для вас), вы должны исправить ее с помощью флажка UseUnsafeHeaderParsing.

Если вы ищете способ установить это значение, программно см. примеры здесь: http://o2platform.wordpress.com/2010/10/20/dealing-with-the-server-committed-a-protocol-violation-sectionresponsestatusline/

Ответ 3

Другая возможность: при выполнении POST сервер реагирует на 100 продолжить неправильным образом.

Это решило проблему для меня:

request.ServicePoint.Expect100Continue = false;