PRB: ThreadAbortException apare dacă utilizați Response.End, Response.Redirect sau Server.Transfer

Traduceri articole Traduceri articole
ID articol: 312629 - View products that this article applies to.
Măriți totul | Reduceți totul

Simptome

Dacă utilizați metoda Response.End, Response.Redirect sau Server.Transfer, apare o excepție ThreadAbortException. Puteți utiliza o instrucțiune try-catch pentru a prinde această excepție.

Cauză

Metoda Response.End termină executarea paginii și trece la executarea evenimentului Application_EndRequest în fluxul de evenimente ale aplicației. Linie de cod care urmează după Response.End nu se execută.

Această problemă apare la metodele Response.Redirect și Server.Transfer, deoarece ambele metode apelează la Response.End pe plan intern.

Rezoluție

Pentru a soluționa această problemă, utilizați una dintre următoarele metode:
  • Pentru Response.End, apelați metoda HttpContext.Current.ApplicationInstance.CompleteRequest în loc de Response.End pentru a omite executarea codului pentru evenimentul Application_EndRequest.
  • Pentru Response.Redirect, utilizați o suprasarcină, Response.Redirect(String url, bool endResponse) care trece drept falsă pentru parametrul endResponse pentru a suprima apelarea internă pentru Response.End. De exemplu:
      Response.Redirect ("nextpage.aspx", false);
    						
    Dacă utilizați această soluție, codul care urmează după Response.Redirect se execută.
  • Pentru Server.Transfer, utilizați în schimb metoda Server.Execute.

Stare

Acest comportament este cel proiectat.

Proprietă?i

ID articol: 312629 - Ultima examinare: 30 august 2013 - Revizie: 2.0
Se aplică la:
  • 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
Cuvinte cheie: 
kbexcepthandling kbprb KB312629

Trimite?i feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com