Response.Redirect不起作用

时间:2012-06-25 02:45:44

标签: c# asp.net excel-2007 response.redirect

我有一个页面可以将大量数据导出为ex​​cel 2007启用宏的格式。在创建excel文件后,我在最后有Response.Redirect重定向到另一个页面,但是当我有大量数据,即大约60,000多行时,重定向不起作用。 下面是我用来保存excel文件的代码片段:

Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm");
Response.ContentType = "application/octet-stream";
wbRegionData.Save(Response.OutputStream);//();
Response.End();
Response.Redirect("RegionData.aspx?PALID=" + AVListID, true);

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您无法在同一服务器响应中执行文件下载和重定向。如果您需要在成功下载文件后执行重定向,则需要以某种方式告诉客户端已成功发生文件下载,这只能通过编写cookie来完成。

我创建了jQuery文件下载插件(Demo)(GitHub(Blog Posts),这简化了很多这样的东西,使用插件你的代码可能是这样的:< / p>

ASP.NET代码:

Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm");
Response.ContentType = "application/octet-stream";
Response.SetCookie(new HttpCookie("fileDownload", "true"){Path = "/"});
wbRegionData.Save(Response.OutputStream);//();
Response.End();

JavaScript的:

$.fileDownload("/urltofiledownload/", {
    successCallback: function (url) {
        window.location = "/redirecturl/";
    }
});

如果没有更多代码,我无法为您提供完整的解决方案(请查看Demo示例),但我认为使用该插件将是您最简单,最好的选择。

答案 1 :(得分:0)

您不能因为您通过调用Response.End();来关闭响应。您必须单独添加定义这两个操作(下载和重定向)。

答案 2 :(得分:0)

它不起作用,因为Response.End()方法停止了页面的正常执行,我重构了你的代码并删除de Response.End()方法,现在它正常工作。

    Response.Clear();
    Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm");
    Response.ContentType = "application/octet-stream";
    wbRegionData.Save(Response.OutputStream);//();
    Response.Redirect("RegionData.aspx?PALID=" + AVListID, true);