2012年2月28日 星期二
[C#] 服務器提交協議衝突Section=ResponseStatusLine 的解決辦法
Author: Mango
|
at:清晨6:22
|
Category :
.NET,
C#,
Framework 3.5,
visual studio 2008
|
轉自http://blog.csdn.net/liehuo123/article/details/5689222
最近在用.net寫一個網絡蜘蛛,發現對有的網站用HttpWebrequest抓取網頁的時候會報錯,捕獲異常提示:"服務器提交了協議衝突Section=ResponseStatusLine ”,改用WebClient也是同樣問題,後來知道,WebClient是對HttpWebrequest進一步進行了封裝。
最後終於找到問題根源:The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF微軟沒有容忍不符合RFC 822中的httpHeader必須以CRLF結束的規定的服務器響應。
通過修改配置文件解決:在app.config(WinForm)或web.config(Web)文件裡修改。WinForm下的app.config文件中添加:
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
完整app.config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system. net>
</configuration>
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言