Response.End()抛出一个错误

sal*_*ah9 2 asp.net

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

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

Response.End()我收到一个错误ThreadAbortException

为了避免这个错误,我试图使用httpApplication.CompleteRequest(),但我也无法使用它.

httpApplication.CompleteRequest()的代码如下,

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
Response.TransmitFile(strFilePath);
HttpApplication.CompleteRequest();
Run Code Online (Sandbox Code Playgroud)

我在使用HttpApplication.CompleteRequest()时遇到此错误

An object reference is required for the non-static field, method, or property 'System.Web.HttpApplication.CompleteRequest()'
Run Code Online (Sandbox Code Playgroud)

我希望我能够清楚地表达我的怀疑......帮助我......

nun*_*cal 6

Response.End()预计会抛出一个ThreadAbortException.
这是设计使然,因此不处理页面响应的其余部分.

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

参考:HttpResponse.End

CompleteRequest方法不会引发异常,并且可能会执行对CompleteRequest方法的调用之后的代码.如果您的目的是避免执行后续代码,并且如果End的性能损失可以接受,则可以调用End而不是CompleteRequest.