将Response.End()替换为ApplicationInstance.CompleteRequest()时未下载文件

时间:2019-06-10 07:10:07

标签: asp.net download threadabortexception

我想创建一个文件下载。这是它的原始代码:

Response.Clear()
Response.ContentType = "text/html"
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=""Dashboard_{0}.html""", time))
Response.Write(html)
Response.End()

看起来还不错。文件已正常下载,但在“输出”中发现了以下消息。

  

mscorlib.dll中发生了类型'System.Threading.ThreadAbortException'的第一次机会异常

我试图寻找解决此异常的方法,我看到每个人都在谈论将Response.End()替换为HttpContext.Current.ApplicationInstance.CompleteRequest()

当我尝试时,不再发生异常,但是结果甚至更糟-更改后未下载文件。就像我只是删除Response.End()并不添加任何内容一样。

在这种情况下,当需要下载时我应该怎么做才能摆脱异常?还是应该忽略该异常,因为它似乎不会产生任何不利的结果?

1 个答案:

答案 0 :(得分:0)

这是response.End()

  

为模仿ASP中End方法的行为,此方法尝试   引发[ThreadAbortException]异常。

请看一下 https://docs.microsoft.com/en-us/dotnet/api/system.web.httpresponse.end?redirectedfrom=MSDN&view=netframework-4.8#System_Web_HttpResponse_End

也尝试删除

  

Response.Clear()