首页 新闻 搜索 专区 学院

基于asp.net comet 之IHttpAsyncHandler接口使用

0
悬赏园豆:10 [已解决问题] 解决于 2013-10-10 10:12

嗯,由于是长连接,每个请求会在20秒钟后没有消息时服务器会断开这个连接.但是我用火狐浏览器同时打开比如说3个请求页面,但是最后断开连接的只有第三个,第一个和第二个始终没有断开连接?这是怎么回事儿?IHttpAsyncHandler这个接口微软说的也不是很明细!

unbreakable的主页 unbreakable | 初学一级 | 园豆:111
提问于:2013-08-26 14:02
< >
分享
最佳答案
0

“每个请求会在20秒钟后没有消息时服务器会断开这个连接”,这个结论的依据是什么?

收获园豆:10
dudu | 高人七级 |园豆:36427 | 2013-08-26 18:07

每个请求都会保存进入服务器的时间,一旦在服务器呆的时间超过20秒钟后,服务器会向这条连接发送信息,可能的消息是告诉浏览器重新连接服务器。但是现在的问题是,假如在第一个请求到达服务器的20秒钟内,还有其他请求也随之进来了,比如还有两个2请求。那么在服务器被缓存的请求有3个,按常理说,第一个请求先进来,应该会先断开连接。但是事实却违背,总是最后一个连接被断开,之前的第一个和第二个连接还在连接服务器的!纠结死了,,,求指教

unbreakable | 园豆:111 (初学一级) | 2013-08-27 10:13

@unbreakable: 

试试关闭IIS的keep alive

dudu | 园豆:36427 (高人七级) | 2013-08-27 10:18

@dudu: 我是用的vs自带的,没用IIS,难道自带的iis不能处理多个请求吗??在线等。。。。

unbreakable | 园豆:111 (初学一级) | 2013-08-27 10:47

@dudu: 大虾,求指教。。。

unbreakable | 园豆:111 (初学一级) | 2013-08-27 13:47

@unbreakable: 我在后台测试了一下,在后台的EndProcessRequest是可以看出每个连接断开返回的结果的,但是只有最后一个是断开的连接,前几个长连接是没有断开的。不知道有什么办法解决没有?

unbreakable | 园豆:111 (初学一级) | 2013-08-27 14:45

@unbreakable: 建议用IIS进行测试

dudu | 园豆:36427 (高人七级) | 2013-08-27 16:28

@dudu: 嗯,还是一样的!没有什么改变?不知道iis还要设置什么呀?EndProcessRequest返回的参数IAsyncResult,都是每个都调用的,但是只释放了最后一个连接!

unbreakable | 园豆:111 (初学一级) | 2013-08-28 16:15

@unbreakable: 嗯,试了的,感觉iis要配置什么!多个浏览器一个页面请求超时可是释放,但是同一个浏览器多个请求超时就只能释放最有一个请求!

unbreakable | 园豆:111 (初学一级) | 2013-08-29 08:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册