Asp.net
Response.Redirect 未結束執行
我有 Default.aspx 頁面,它繼承自 BasePage.cs,繼承自 System.Web.UI.Page。BasePage 是我在每個頁面載入時必須做的一些常見事情的地方。
在 BasePage 中,假設我正在檢查 X。如果 X=1,那麼我將立即重定向到我的“Discontinued.aspx”頁面並停止執行 BasePage。如果我發現 X=1,我會說:
HttpContext.Current.Response.Redirect(“Discontinued.aspx”, true);
我希望重定向停止執行 BasePage 並立即跳出 - 因此上述語句中的“true” - 據我了解,這應該停止目前頁面的執行。問題是,它沒有。我期待重定向拋出“執行緒中止異常”。
當我在調試模式下執行時,它會繼續單步執行,就好像它不只是重定向並離開一樣。
但是重定向仍然開始 - 一旦我完成了 BasePage 的其餘部分,“Discontinued”頁面就會作為重定向的結果開始載入。
我的重定向不會終止 BasePage 的執行是否有原因?
您是否正在退出呼叫重定向的函式,例如
...redirect(stopit,true); return;?
Response.Redirect 的第二個參數是
endResponse,但工具提示顯示“指示目前頁面的執行是否應終止”。這是一種誤導,因為當變數為真時,頁面的執行實際上並沒有終止。它將完成執行任何程式碼。然而,不同的是,Render 事件被取消,並且響應立即與對象移動的標題一起刷新。您需要手動退出任何方法, Response.Redirect / Response.End 不會為您執行此操作。此外,如果您需要條件來查看頁面是否已被重定向,請查看 Response.IsRequestBeingRedirected。