PRB: Eccezione ThreadAbortException se si utilizza Response. end, Response. Redirect o server. Transfer

Sintomi

Se si utilizza il Response. end, Response. Redirect, o
Il metodo server. Transfer , eccezione ThreadAbortException . È possibile utilizzare un'istruzione try-catch per intercettare questa eccezione.

Causa

Il metodo Response. end termina l'esecuzione della pagina e passa l'esecuzione all'evento Application_EndRequest nella pipeline di eventi dell'applicazione. Non viene eseguita la riga di codice che segue Response .

Questo problema si verifica nei metodi Response. Redirect e server. Transfer poiché entrambi chiamano Response internamente.

Risoluzione

Per risolvere questo problema, utilizzare uno dei seguenti metodi:

  • Per Response, chiamare il metodo HttpContext.Current.ApplicationInstance.CompleteRequest invece di Response. end per evitare l'esecuzione del codice all'evento Application_EndRequest .
  • Per Response. Redirect, utilizzare un overload, che passa false per il parametro endResponse per eliminare la chiamata interna a Response. end Response. Redirect (String url, bool endResponse) . Per esempio:
      Response.Redirect ("nextpage.aspx", false);
    Se si utilizza questa soluzione, viene eseguito il codice che segue l'istruzione Response. Redirect .
  • Per server. Transfer, utilizzare invece il metodo Execute .

Stato

Questo è il comportamento previsto.
Proprietà

ID articolo: 312629 - Ultima revisione: 30 gen 2017 - Revisione: 1

Microsoft ASP.NET 4.5, Microsoft ASP.NET 4.0, Microsoft ASP.NET 3.5, Microsoft ASP.NET 2.0, Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

Feedback