2012年2月28日 星期二

[C#] 服務器提交協議衝突Section=ResponseStatusLine 的解決辦法


轉自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>

0 意見:

張貼留言

 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template