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);