【问题标题】:While downloading a file, all requests are blocked下载文件时,所有请求都被阻止
【发布时间】:2009-08-03 05:53:14
【问题描述】:

我的应用程序 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#...

谢谢!!! 丹尼尔

【问题讨论】:

    标签: c# asp.net download blocked


    【解决方案1】:

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

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

    另一种方法是为下载过程启动一个单独的线程,但您需要找到一种方法,如何在工作线程不关闭其资源的情况下完成此操作。

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

    【讨论】:

    • 不,Skrim,那是在经典的 ASP 中。
    • TransmitFile 接受一个文件名参数。我得到的文件位于 Rackspace 的云文件服务器上。因此,我需要对他们的服务器进行身份验证,获取文件(作为流),然后将该流写入 Response.OutputStream。我很确定 TransmitFile 不会那样工作......我发现了这个,但 MSDN 文章并没有完全回答这个问题:forums.asp.net/t/1112997.aspx
    猜你喜欢
    • 2021-10-25
    • 2021-12-19
    • 2017-10-23
    • 2017-01-12
    • 2021-12-26
    • 2018-03-17
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多