1

每当我使用 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();
4

1 回答 1

2

想通了,我最好把它贴出来,以防我再次遇到问题或其他人有这个问题。

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

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

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

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

于 2010-06-30T19:50:33.473 回答