PRB: ThreadAbortException dojde, pokud pomocí metody Response.End, Response.Redirect nebo Server.Transfer

Příznaky

Pokud použijete metody Response.End, Response.Redirectnebo
Metoda Server.Transfer , vyvolá výjimku ThreadAbortException . Do try - catch lze tuto výjimku zachytit.

Příčina

Metody Response.End metoda ukončí provádění stránky a posune provedení Application_EndRequest událost v kanálu událostí aplikace. Řádek kódu, který následuje metody Response.End není spuštěn.

Vzhledem k tomu, že obě metody volání metody Response.End interně, k tomuto problému dochází v metody Response.Redirect a Server.Transfer .

Řešení

Chcete-li tento problém vyřešit, použijte jednu z následujících metod:

  • Metody Response.Endvolání HttpContext.Current.ApplicationInstance.CompleteRequest metody namísto metody Response.End vyp vynechání spuštění kódu Application_EndRequest událost.
  • Response.Redirectpoužijte přetížení, Response.Redirect (url řetězec, logická hodnota endResponse) , který předává false pro endResponse parametr potlačit vnitřní volání metody Response.End vyp. Například:
      Response.Redirect ("nextpage.aspx", false);
    Pokud použijete toto zástupné řešení, je proveden kód, který následuje Response.Redirect .
  • Použijte metodu Server.Execute pro Server.Transfer.

Stav

Toto chování je záměrné.
Vlastnosti

ID článku: 312629 - Poslední kontrola: 20. 1. 2017 - Revize: 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

Váš názor