基础连接已经关闭: 接收时发生意外错误

http://www.cnblogs.com/jinglelin/articles/32407.html

HttpChannel 类
     HttpChannel 类使用 SOAP 协议将消息传输到远程对象或者从远程对象传输消息。所有消息都通过 SoapFormatter 对象来传递,消息在这里被更改为 XML 并被序列化,所需的 SOAP 标头将添加到流中。也可以指定二进制格式化程序,这会产生二进制数据流。然后,数据流会使用 HTTP 协议传输到目标统一资源标识符 (URI)。HttpChannel 符合 SOAP 1.1 并执行以下功能:

将 HTTP 协议用作传输协议,提供发送方和接收方之间的通信。 
以 SOAP(一种 XML 编码标准)提供有效负载的编码。 
将接收方设置为以 ASP.NET 并在 TCP 套接字上接收 HTTP 请求和发送 HTTP 响应。 
为对象引用生成和使用 ChannelDataStore。 
注意   若要在客户端上与 Microsoft Internet Explorer 一起使用 HttpChannel,则不能在 Internet Explorer 中设置代理设置的自动配置。相反,您必须在 Internet Explorer 中显式设置代理设置。
HttpChannel 一次仅打开到给定服务器的指定数目的连接。默认值是 2。可以用应用程序配置文件中的 clientConnectionLimit 属性来更改默认值。

TcpChannel 类
         TcpChannel 类用二进制格式化程序将所有消息序列化为二进制流并且用 TCP 协议将流传输到目标统一资源标识符 (URI)。TcpChannel 执行以下功能:

使用 TCP 套接字提供发送方和接收方之间的通信。 
以二进制格式和工业标准 SOAP 序列化格式提供有效负载的编码。 
为对象引用生成和使用 ChannelDataStore。 
TcpChannel 打开并缓存与当时正在向另一个服务器发出请求的线程一样多的连接。客户端上的套接字连接将在处于不活动状态 15-20 秒钟之后关闭。

如果您正在生成大量使用 .NET 远程处理的应用程序,则可能容易错误地使用 HttpChannel 对象来连接到通过 TcpChannel 侦听的服务器应用程序域。如果您执行了该操作,客户端将收到以下异常:“基础连接已经关闭:接收时发生意外错误”。如果您的客户端收到该异常,则应检查客户端和服务器是否有不匹配的信道。

#1楼   2008-04-18 17:33  awen177[未注册用户]
HttpChannel 一次仅打开到给定服务器的指定数目的连接。默认值是 2。可以用应用程序配置文件中的 clientConnectionLimit 属性来更改默认值。


上面这个属性具体怎么设置?楼主可有例子?

  回复  引用  查看    
#2楼 [ 楼主2008-04-26 09:52  可乐加冰       
设置clientConnectionLimit属性需要在客户端的 .config 文件当中: 
如: 
<system.runtime.remoting> 
<application> 
<channels> 
<channel ref="http" clientConnectionLimit="50"> 
<clientProviders> 
<formatter ref="soap" /> 
</clientProviders> 
</channel> 
</channels> 
</application> 
</system.runtime.remoting> 

  回复  引用    
#3楼   2008-12-14 23:45  张冰冰[未注册用户]
怎样检查到不匹配的信道?而后该怎么办?请教授
  回复  引用  查看    
#4楼 [ 楼主2008-12-31 13:08  可乐加冰       
优先你必须先知道服务器用的是哪种信道类型,一种方式就看所公布的服务接口文档、接口说明,另外就是自己去看服务器的代码或者配置了。 
然后再检查你客户端的信息类别,一对比,这样既可判断信道是否不同。很机械的人工判断方法。 

可能你是想怎么在程序中如何自动检查到不匹配的信道?如果是这样的话,我也没有什么好的解决方法,因为就它提示的“基础连接已经关闭:接收时发生意外错误”信息,真的无法确切地判断具体是什么问题。或许别人有更好的建议。

  回复  引用    
#5楼   2009-01-04 22:56  张冰冰[未注册用户]
我用有线时好好的,用无线时就老出这个鬼错误,而且在服务器和客户端都设置了专门的端口的通信类型的,还是不行,有高手请发帖!!!!
  回复  引用  查看    
#6楼 [ 楼主2009-01-23 09:44  可乐加冰       
@张冰冰 
实际上你的问题跟信道类型是否匹配是无关的的。 
因为无线网络的稳定性是有限的,我估计是因为网络经常发生了中断,因而Remoting的连接已经发生了错误而被关闭,而你的数据就在这个时候因为中断而丢失了,刚才的连接会话也已经无效。

  回复  引用    
#7楼   2009-05-02 15:38  ftz[未注册用户]
,我也遇到此错误了.. http的. tomcat运行一会就报这个错

在c#中使用HttpWebRequest时,频繁请求一个网址时,过段时间就会出现“基础连接已经关闭: 接收时发生意外错误”的错误提示。

将webRequest的属性设置成下面的,经测试可以解决。

webRequest.KeepAlive   =   false;

webRequest.ProtocolVersion   =   HttpVersion.Version10;


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值