服务器提交协议冲突 Section=ResponseStatusLine 的解决办法

来源:互联网 发布:淘宝客软件哪个好 编辑:程序博客网 时间:2024/05/01 03:35

最近在用.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>


编译以后会在Debug下面自动创建一个 程序名.exe.config 的配置文件
希望大家能少走弯路,Good Luck~

 

 

原创粉丝点击