Asp.net Response.End()引发错误

Asp.net Response.End()引发错误,asp.net,Asp.net,在我的应用程序中,我需要下载一个文件,因此我使用以下代码: Response.ContentType = "application/octet-stream"; Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls"); Response.TransmitFile(strFilePath); Response.End()

在我的应用程序中,我需要下载一个文件,因此我使用以下代码:

 Response.ContentType = "application/octet-stream";                    
 Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
 Response.TransmitFile(strFilePath);
 Response.End();
Response.End()

为了避免此错误,我正在尝试使用httpApplication.CompleteRequest(), 但是我也不能用这个

包含httpApplication.CompleteRequest()的代码如下所示

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
Response.TransmitFile(strFilePath);
HttpApplication.CompleteRequest();
我在使用HttpApplication.CompleteRequest()时遇到此错误

我希望我能澄清我的疑问。。。 帮帮我……

请尝试以下代码:

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
Response.TransmitFile(strFilePath);
HttpContext.Current.ApplicationInstance.CompleteRequest();
Response.End()
应引发
ThreadAbortException

这是经过设计的,因此不会处理页面响应的其余部分

获取此异常完全可以,它将确保页面不会被进一步处理

参考:

CompleteRequest方法不会引发异常,并在 可能会执行对CompleteRequest方法的调用。如果你的 目的是避免执行后续代码,如果 End的性能惩罚是可以接受的,您可以调用End而不是 完成任务


只要评论这句话,你就可以开始了:

//Response.End();

它对我有效:)

发生错误是因为您使用的是ASP更新面板或任何使用JavaScript的控件。尝试在不使用JavaScript或ScriptManager或脚本的情况下使用ASP或HTML的本机控件。

我遇到过这个问题,并用以下代码解决了它

ScriptManager sm = ScriptManager.GetCurrent(this.Page);
              sm.RegisterPostBackControl(this.grid);

ThreadAbortException
的确切消息是什么?这是一个错误“无法计算表达式,因为代码已优化或本机框架位于调用堆栈顶部”。您可以使用通用处理程序(.ashx文件)来服务该文件,而不是从aspx页面服务该文件。
ScriptManager sm = ScriptManager.GetCurrent(this.Page);
              sm.RegisterPostBackControl(this.grid);