基础连接已经关闭: 该服务器提交了 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缺省设定。

以资备案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值