ThreadAbortException si verifica se si usa Response.End, Response.Redirect o Server.Transfer
Questo articolo consente di risolvere l'errore ThreadAbortException che si verifica se si usa Response.End
, Response.Redirect
o Server.Transfer
.
Versione originale del prodotto: ASP.NET in .NET Framework 4.5.2, ASP.NET in .NET Framework 3.5 Service Pack 1
Numero KB originale: 312629
Sintomi
Se si usa il Response.End
metodo , Response.Redirect
o Server.Transfer
, si verifica un'eccezione ThreadAbortException. È possibile usare un'istruzione try-catch
per intercettare questa eccezione.
Causa
Il Response.End
metodo termina l'esecuzione della pagina e sposta l'esecuzione all'evento Application_EndRequest nella pipeline di eventi dell'applicazione. La riga di codice seguente Response.End
non viene eseguita.
Questo problema si verifica nei Response.Redirect
metodi e Server.Transfer
perché entrambi i metodi chiamano Response.End internamente.
Risoluzione
Per risolvere questo problema, usare uno dei metodi seguenti:
Per
Response.End
chiamare ilHttpContext.Current.ApplicationInstance.CompleteRequest
metodo anzichéResponse.End
per ignorare l'esecuzione del codice all'eventoApplication_EndRequest
.Per
Response.Redirect
usare un overload, Response.Redirect(String URL, bool endResponse) che passa false per il parametro endResponse per eliminare la chiamata interna aResponse.End
. Ad esempio:Response.Redirect ("nextpage.aspx", false);
Se si usa questa soluzione alternativa, viene eseguito il codice seguente
Response.Redirect
.Per
Server.Transfer
, usare invece ilServer.Execute
metodo .
Anche se ASP.NET gestisce questa eccezione, è possibile usare l'istruzione try-catch
per intercettare questa eccezione. Ad esempio:
try
{
Response.Redirect("nextpage.aspx");
}
catch (Exception ex)
{
Response.Write (ex.Message);
}
Aggiungere un punto di interruzione sulla Response.Write
riga e notare che questo punto di interruzione viene raggiunto. Quando si esamina l'eccezione, si noti che si verifica l'eccezione ThreadAbortException.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per