1

我在我的应用程序 Pelotonics 中遇到问题。当用户下载文件时,系统似乎会阻止所有传入请求,直到该文件完成下载。打开下载对话框(浏览器标准)的正确技术是什么,让用户开始下载文件,然后在下载文件时,让用户继续整个应用程序。

我们从服务器获取文件的方式是我们有一个单独的 ASPX 页面,它通过查询字符串传入一个值,然后从服务器检索文件流,然后添加“content-disposition”标头到响应,然后循环通过文件的流并将 2KB 块读取到 response.outputstream。然后一旦完成,我会做一个 Response.End。

观看此问题的快速截屏视频:

http://www.screencast.com/users/PeloCast/folders/Jing/media/8bb4b1dd-ac66-4f84-a1a3-7fc64cd650c0

顺便说一句,我们在 ASP.NET 和 C#...

谢谢!!!丹尼尔

4

1 回答 1

0

我认为 ASP.NET 允许每个会话同时执行一个页面,并且我不知道有任何其他方式来配置它。

这不是一个非常好的解决方法,但如果您将 ASP.NET_SESSIONID 值重写为 Application_BeginRequest(在 global.asax 中)中的请求 cookie,它可能会有所帮助。当然,您需要以其他方式进行身份验证。不过,我还没有尝试过。

另一种方法是为下载过程启动一个单独的线程,但您需要找到一种方法,在没有工作线程关闭它的资源的情况下如何做到这一点。

请问,你有什么理由不直接使用 HttpResponse.TransmitFile 吗?

于 2009-08-03T06:05:54.870 回答