Response.End()
生成ThreadAbortException
.
代替HttpContext.Current.ApplicationInstance.CompleteRequest
它并不能解决问题。
那么,我们可以使用Response.Flush()
而不是Response.End()
Response.End()
生成ThreadAbortException
.
代替HttpContext.Current.ApplicationInstance.CompleteRequest
它并不能解决问题。
那么,我们可以使用Response.Flush()
而不是Response.End()
将Response.Flush()
缓冲区中的内容发送给浏览器,但不会停止页面的处理,因此它将继续执行后续步骤。
要做的Response.End()
是停止 asp.net Page Life Cycle 中下一个函数调用的执行步骤。 http://msdn.microsoft.com/en-us/library/ms178472.aspx
这就是为什么它需要抛出一个异常,抛出一系列调用的循环。
一种替代方法是,Response.Close()
但这也不会停止执行步骤,如果您在与浏览器的连接关闭后尝试发送某些内容,则可能会出现其他错误。如果您这样做,Response.Close()
您还需要Flush()
在调用它之前也这样做,否则浏览器会获得不可预测的数据。
您还可以阅读:Redirect to a page with endResponse to true VS CompleteRequest and security thread
使用下载文件前的条件Response.IsClientConnected
-
if (Response.IsClientConnected)
{
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "Application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.TransmitFile(Server.MapPath(@"yourpath" + fileName));
Response.Flush();
Response.Close();
}
经过大量的努力,它对我很有效。我希望它也适合你。
不!你不能!你可以
Response.SuppressContent = true;