每当我使用TransmitFile发送文件时,用户的sirte就会被阻塞,直到文件完成为止。现在,用户不能浏览该站点。
如果用户取消传输,它仍然会被阻止,直到站点超时或完成数据发送。我不知道是哪一个,但我知道如果我在开始下载后立即取消了一个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();发布于 2010-07-01 03:50:33
解决了这个问题,我最好把它贴出来,以防我再次遇到这个问题,或者其他人也有这个问题。
这个问题是由我的页面使用会话数据这一事实引起的。我的下载页面需要这个会话数据来记住某些事情,如排序,搜索词等。我应该注意到,页面还显示文件并在单击按钮时运行上面的代码。
因此,当我的下载代码(上面的代码片段)运行时,传输受到IIS的保护,以确保会话数据保持不变。这是因为它应该在正常的页面导航下,但显然不希望文件传输。
通过将下载代码移出该页面并放入没有会话数据的页面中,可以在用户愉快地继续浏览站点的同时进行下载。
我还使用Page指令中的EnableSessionState="False"创建了新的下载页面,以确保它不会使用该会话。
https://stackoverflow.com/questions/3137186
复制相似问题