【发布时间】:2017-12-01 20:58:38
【问题描述】:
自从我升级到 VSC 2017 以来,我注意到 HttpContext.Response 函数的使用变得非常棘手,因为预期的错误“线程被中止”很少得到正确处理。有时它可以工作,但它很可能会遇到该错误并退出。
我自己尝试了处理此错误的常用步骤:添加
HttpContext.Current.ApplicationInstance.CompleteRequest();
例如在 Response.Redirect 命令的末尾,但这些没有效果。
具体示例:我有一个将 GridView 导出到 Excel 电子表格的应用程序。按照为电子表格收集和格式化我的数据的步骤,通过以下步骤创建文件。
using (var memoryStream = new MemoryStream())
{
var resp = System.Web.HttpContext.Current.Response;
resp.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
resp.AddHeader("content-disposition", "attachment; filename=" + FileName + ".xlsx");
excel.SaveAs(memoryStream);
memoryStream.WriteTo(resp.OutputStream);
resp.Flush();
resp.End();
}
您可以看到 Response 正在显式结束,但它仍然失败并出现相同的错误。我使用的是什么浏览器都没有关系,我使用的是 .NET Framework 4.5.2——它是我部署到的服务器支持的最高版本。有人有什么想法吗?
【问题讨论】:
标签: asp.net visual-studio visual-studio-2017