基础连接已经关闭: 该服务器提交了 HTTP 协议冲突

基础连接已经关闭: 该服务器提交了 HTTP 协议冲突

这个通常在我们使用.net http协议组件访问 某些互联网url资源的时候发生。
但 是发觉采用winhttp的封装来读取是没有问题的,正常返回的,但有托管的原生组件却去使用COM,总觉得不爽。但是却不知道问题到底出在那里?感觉, 肯定同.net的http实现代码有关系,因为同一个url,COM组件的读取是正常的(COM时代已经经过了考验);但是,又不是所有的url出现类似 故障,一般是大约一些动态的asp.net页面出现的概率比较大。

 

近日终于查出来了,微软有相关的KB讨论:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=296969&SiteID=1

 

具体来说,就是在配置文件中加入
<configuration>

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

原 来是部分url的实现http协议可能会出现并非CRLF的结束部分,这个被实现较为严格的.net http协议组件所捕获,就出现题是错误,而实际上,这个大多数com时代的http协议组件是可以忽略的。为了让.net 的原生组件也忽略,就如上配置,覆盖系统的machine.config缺省设定。

以资备案

posted @ 2007-10-26 16:58  梁小鱼  阅读(1583)  评论(0编辑  收藏  举报