我们收到通知,该网站存在以下错误:

Exception Thread was being aborted., ,    at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort(Object stateInfo)
at System.Web.HttpResponse.End()


在Upoin的调查中,我们发现应该修改重定向方法。

当前代码:Response.Redirect(URL)

应通知为:Response.Redirect(URL, false)

这确实解决了问题,Microsoft也建议:http://support.microsoft.com/kb/312629/en-us

但是,我们还遇到了以下代码:

response.Flush();
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();


参考:http://dotnetplussqlserver.blogspot.in/2014/01/excel-download-responseend-throwing.html

有人可以帮助我们说明哪种方法更好吗?彼此之间的意义何在?
我们只需要简单的重定向。

谢谢。

最佳答案

关于Response.Reditect如果您查看该方法的MSDN Documentation Page签名是

public void Redirect(
    string url,
    bool endResponse
)


endResponse用于


  endResponse
      类型:System.Boolean

Indicates whether execution of the current page should terminate.



因此,当您说Response.Reditect(URL, false)时,它将直接重定向到提到的URL,而无需进一步处理当前页面。

文档页面下方的引用:


  当您在页面处理程序中使用此方法来终止对
  一页并开始对另一页的新请求,将endResponse设置为
  false,然后调用CompleteRequest方法。如果指定为true
  对于endResponse参数,此方法为
  原始请求,该请求引发ThreadAbortException异常
  完成时。此异常会对Web产生不利影响
  应用程序性能,这就是为什么将false传递给
  建议使用endResponse参数。

07-24 13:56