我有這個錯誤線程被中止。,今天下午在我的錯誤日誌中。Response.Redirect和線程被中止錯誤?
導致此錯誤代碼是:
Response.Redirect("Login.aspx", true);
如果我的bool
值更改爲false
,錯誤日誌爲空,但此錯誤停止再來,但程序停止工作。
如果我保持這樣,我得到這樣的錯誤就像討厭。
我想知道使用Response.Redirect
通過true
作爲endResponse
參數的值的替代方法。
我有這個錯誤線程被中止。,今天下午在我的錯誤日誌中。Response.Redirect和線程被中止錯誤?
導致此錯誤代碼是:
Response.Redirect("Login.aspx", true);
如果我的bool
值更改爲false
,錯誤日誌爲空,但此錯誤停止再來,但程序停止工作。
如果我保持這樣,我得到這樣的錯誤就像討厭。
我想知道使用Response.Redirect
通過true
作爲endResponse
參數的值的替代方法。
我發現了這個異常並將其吞下,因爲ASP.NET使用異常進行流量控制而非異常情況。
try
{
// Do stuff.
}
catch(ThreadAbortException)
{
// Do nothing. ASP.NET is redirecting.
// Always comment this so other developers know why the exception
// is being swallowed.
}
catch(OtherExceptionTypes ex)
{
// Log other types of exception.
}
你可以這樣 的Response.Redirect( 「爲Login.aspx」,FALSE)改變 那麼它不會中止。
正如Response.Redirect(url)
ThreadAbortException解決方案指出:
,當你撥打電話到
Response.Redirect(url)
因爲系統中止 當前網頁線程處理髮送重定向到一個響應 後ThreadAbortException被拋出流。Response.Redirect(url)
實際上在內部致電Response.End()
,它的Response.End()
調用Thread.Abort()
哪個 冒泡堆棧以結束線程。在極少情況下,致電Response.End()
的 實際上不會呼叫Thread.Abort()
,而是 而不是呼叫HttpApplication.CompleteRequest()
。
或者只是將Response.Redirect("~/Membership/UserRegistration.aspx");
移出Try/Catch塊。
對於要重定向,創建所有捕獲錯誤的一個「轉到」註定了嘗試捕捉如下:
Try
'do stuff
Catch ex As Exception
'logging
GoTo MyRedirection
End Try
'Prevent redirection in case of no errors
Exit Sub
MyRedirection:
Response.Redirect("login.aspx", True)
這既會導致流產線程也不需要多漁獲。
檢出http://msdn.microsoft.com/en-us/library/a8wa7sdt(VS.80).aspx – Mike 2010-12-06 16:35:00
Respose.Redirect將在內部調用Response.End,它可以通過使用'false' (Response.Redirect(Login.aspx,false);)。但它不應該導致程序停止工作。 – wizzardz 2010-12-06 16:42:03