在 ASP.NET 重定向中处理 System.Threading.ThreadAbortException
在 ASP.NET 中使用 Response.Redirect()
有时会抛出 System.Threading.ThreadAbortException
。发生这种情况是因为服务器在重定向后终止了当前页面的执行。 将endResponse
中的true
设置为Response.Redirect()
可以避免异常,但会允许重定向后进行不必要的处理,效率低下。
最好的方法
理想的解决方案是使用 Response.Redirect()
,并将 endResponse
设置为 false
,后跟 Context.ApplicationInstance.CompleteRequest()
。这毫无例外地干净地重定向:
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
这告诉 IIS 管道立即进入 EndRequest
阶段,防止进一步处理当前页面。
延伸阅读
有关更详细的说明,包括在 Application_Error
处理程序中处理重定向,请参阅 Thomas Marquardt 富有洞察力的博客文章(如果有的话,将在此处插入博客文章的链接)。 这种方法可确保 ASP.NET 应用程序中的高效且无异常的重定向。
以上是如何在 Response.Redirect 期间避免 System.Threading.ThreadAbortException?的详细内容。更多信息请关注PHP中文网其他相关文章!