解決 ASP.NET 重定向中的 ThreadAbortException
問題:
在 ASP.NET 中使用 Response.Redirect(...)
進行頁面重定向時,您可能會遇到可怕的「System.Threading.ThreadAbortException」錯誤。
理解異常:
發生此異常是因為Response.Redirect
預設會繼續執行重定向指令後的程式碼。 然後,Web 伺服器提前終止請求,導致異常。
解決方案:受控重定向
避免這種情況的最佳方法是使用 Response.Redirect
重載,它允許您控制回應結尾:
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
將 endResponse
參數設為 false
,可以防止請求立即終止。 Context.ApplicationInstance.CompleteRequest()
然後明確向 IIS 發出訊號,直接進入 EndRequest
階段,透過避免重定向後執行不必要的程式碼來最佳化效能。
為什麼這樣比較好:
雖然簡單地使用 Response.Redirect(url, true)
似乎是一個解決方案,但它可能會導致效能問題,因為頁面上的其餘程式碼在重定向生效之前仍然運行(儘管短暫)。上述方法提供了更乾淨、更有效率的重定向。
進一步閱讀:
要更深入地了解處理邊緣情況,例如 Application_Error
處理程序中的重定向,請參閱 Thomas Marquardt 的部落格等資源(如果有的話,將在此處插入連結)。
以上是如何在 ASP.NET 中的 Response.Redirect 期間避免 ThreadAbortException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!