2009-12-29 17 views
18

Pracuję na aplikacji asp.net .. kiedy próbuję skompilować i uruchomić aplikację; działa poprawnie.Pierwszy przypadek wyjątek typu "System.Threading.ThreadAbortException" wystąpił w mscorlib.dll

Ale gdy próbuję debugowania aplikacji daje mi błąd w dowolnym momencie -

Pierwsza szansa wyjątek typu „System.Threading.ThreadAbortException” wystąpił w pliku mscorlib.dll

To robi dać błąd w jakiejś konkretnej linii kodu ... daje ten błąd przy jakimkolwiek kodzie linii (nie jestem pewien) .. a następnie wyświetla się strona internetowa - błąd "Aplikacja serwera niedostępna".

Nawet gdy próbuję analizować/wykonać jakieś oświadczenie w najbliższym oknie/szybkie zegarek - to daje mi powyższy błąd ..

na przykład, załadowany dokument XML (ponad 10000 wierszy) w Xelement i kiedy próbuję sprawdzić wartość atrybutu thru xpath jako XElementObj.XPathSelectElement ("/ asdf/asd/wqer/xyz") .. daje powyższy błąd .. (nie cały czas, ale losowo).

ktoś, kto ma jakiś pomysł na ten temat ... proszę o pomoc.

+0

Nie jestem pewien, czy ma to coś wspólnego z wyjątkiem pierwszej szansy - wyjątek pierwszej szansy to wyjątek, który został przechwycony i przetworzony, zachowując integralność przepływu pracy. –

Odpowiedz

32

miałem coś podobnego, i okazało this answer z innym pytaniem:

Jeśli chcesz wskazać gdzie wyjątki występują, można wybrać Debug-> Wyjątki menu pozycję, aw wyświetlone okno dialogowe, zaznacz pierwsze pole wyboru dla "Common Wyjątki środowiska wykonawczego języka". Ta wersja spowoduje, że debuger ulegnie uszkodzeniu, jak tylko , ponieważ wystąpi wyjątek zamiast tylko zerwaniu nieobsługiwanych wyjątków.

Jest to również jeden z powodów, dlaczego jest ogólnie zły pomysł, aby złapać rodzajowe wyjątków, chyba że są wyraźnie zalogowaniu informacje złapany.

+0

OMG. Jak często zapomniałem ... Jeszcze raz dziękuję za przypomnienie! Nie podoba mi się nowy "Rzuć wszystko dookoła" - nie traktuj tak naprawdę :-) Zbyt wiele wyjątków, człowieku ... –

12

miałem ten wyjątek rzucony w mojej aplikacji asp.net, a znalezione this forum post:

PRB: ThreadAbortException występuje, jeśli używasz Response.End, Response.Redirect lub Server.Transfer http://support.microsoft.com/default.aspx?scid=kb;en-us;312629

to sensu, ponieważ byłem przekierowanie na stronę tuż zanim cokolwiek zostało wydane (oczekiwane zachowanie na drodze)

Obejście przez MS tłumić wszelkie wyjątki:

Aby obejść ten problem, użyj jednej z następujących metod:

  • Dla Response.End, należy wywołać metodę HttpContext.Current.ApplicationInstance.CompleteRequest zamiast Response.End, aby ominąć wykonanie kodu do zdarzenia Application_EndRequest.

  • Dla Response.Redirect, użyj przeciążenia, Response.Przekierowanie (URL typu String, bool endResponse), które przekazuje wartość false dla parametru endResponse w celu zignorowania wewnętrznego wywołania Response.End. Na przykład: Response.Redirect ("nextpage.aspx", false);

  • Dla Server. Transfer, należy użyć metody Server.Execute.

Jeśli używasz tego obejścia, kod, który następuje Response.Redirect jest wykonywany. Dla Server.Transfer użyj zamiast tego metody Server.Execute.

Powiązane problemy