HttpWebRequestError: сервер совершил нарушение протокола. Раздел = ResponseHeader Detail = CR должен сопровождаться LF
Я создал образец приложения asp.net и попытаюсь очистить данные с моего сервера с помощью httpwebrequest. Но иногда я получал эту ошибку выше. Я сделал некоторые поиски в google, но все говорят, что вы должны добавить свойство "<httpWebRequest useUnsafeHeaderParsing="true" />
" в web.config.
У этого свойства есть слово "UNSAFE", поэтому я слишком беспокоюсь об этом. Я не могу добавить это в настройку моего сайта. Есть ли другой способ прочитать ответ моего URL-адреса. Пожалуйста, дайте мне знать, как возможно ли это без "<httpWebRequest useUnsafeHeaderParsing="true" />
"
Спасибо заранее,
Лакшмилальная менария
Ответы
Ответ 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;