我们被告知该网站有以下错误:
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
有人可以帮助我们澄清哪种方法更好吗?一个人对另一个人有什么重要意义? 我们只想要简单的重定向。
谢谢。
答案 0 :(得分:-1)
如果查看方法的MSDN Documentation Page签名,请关于Response.Reditect
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参数,此方法调用End方法 原始请求,抛出ThreadAbortException异常 当它完成。此异常对Web有不利影响 应用程序性能,这就是为什么传递false的原因 建议使用endResponse参数。