我们收到通知,该网站存在以下错误:
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参数。