IE浏览器在取消一个下载后再次取消下载的行为应该如何解释?
为啥呢 2013-01-18 01:28:00 我要实现的功能是让同一个用户在同一时间只能下载同一个文件一次,多次就会提示用户当前正在下载的任务并允许用户主动取消下载。
在实现取消下载操作时遇到了以下问题:
Firefox和Chrome在用户每次取消下载时都会关闭服务器端的输出流,而IE只在第一次取消下载时会关闭,从第二次开始要么等待超时,要么等待浏览器进程关闭,否则输出流一直不会被关闭。
我在服务器端判断用户取消下载这个行为时根据抛出的ClientAbortException异常来判断,所以IE的这个特点让我无法知道用户是关闭了输出流还是网络出现了延迟,因为除第一次取消下载外只能等待超时才抛出ClientAbortException。
另外我发现IE在用户多次点击同一个下载时会复用这个输出流,我还看不出这样做有什么必要性,又或者IE会通过其他方式通知服务器端客户端关闭操作?我认为让用户必须等待超时是很不友善的行为。
我现在的实现方式是当用户取消操作时强行关闭用于输出流的文件管道对象,以此来终止下载。
不知道有谁有这个问题更好的解决方案?