【问题标题】:ASP.NET TransmitFile causes site to blockASP.NET TransmitFile 导致站点阻塞
【发布时间】:2011-03-09 09:47:36
【问题描述】:

每当我使用 TransmitFile 发送文件时,sirte 都会阻止用户访问,直到文件完成。 IOW,用户无法浏览该网站。

如果用户取消传输,它仍然会阻塞,直到站点超时或完成数据发送。我不知道是哪个,但我知道,例如,如果我在开始下载后立即取消 30MB 文件,恢复所需的时间比 10MB 文件要长。

以下是相关代码:

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", contdisp);
Response.AddHeader("Content-Length", new FileInfo(fullfilename).Length.ToString());
Response.TransmitFile(fullfilename);
Response.Flush();

【问题讨论】:

    标签: asp.net blocking transmitfile


    【解决方案1】:

    想通了,我最好发布它,以防我再次遇到问题或其他人遇到此问题。

    问题是因为我的页面使用了会话数据。我的下载页面需要此会话数据来记住某些内容,例如排序、搜索词等。我应该注意,该页面还显示文件并在单击按钮时运行上面的代码。

    因此,当我的下载代码(上面的 sn-p)运行时,传输受 IIS 保护,以确保会话数据保持不变。这是因为它应该在正常的页面导航下,但显然不适合文件传输。

    通过将下载代码移出该页面并进入没有会话数据的页面,下载可以在用户愉快地继续浏览该站点时进行。

    我还在Page 指令中使用EnableSessionState="False" 创建了新的下载页面,以确保它不会使用会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多