Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 DevelopingChris
DevelopingChris

De ce cererea mea asp.net aruncă ThreadAbortException?

auto-explicativă.

De ce face acest lucru balon în încercarea mea de captură, chiar și atunci când nimic nu este în neregulă?

De ce se afișează în jurnalul meu de sute de ori?

Îi cunosc o întrebare nouă, dar dacă acest site va primi clasarea în căutarea și va atrage noi, trebuie să îi întrebăm

21 2008-08-15T17:02:44+00:00 5
Programare
multithreading
asp.net
Comentarii la întrebare (0)
Eric Z Beard
15 august 2008 в 9:11
2008-08-15T21:11:32+00:00
Mai mult
Sursă
Editează
#12484

Probabil că vine de la un apel Response.Redirect. Verificați acest link pentru o explicație:

http://dotnet.org.za/armand/archive/2004 /11/16/7088.aspx

(În cele mai multe cazuri, apelând la Response.Redirect (url, false) rezolvă problema)

0
0
Comentarii (0)
rjzii
15 august 2008 в 9:12
2008-08-15T21:12:45+00:00
Mai mult
Sursă
Editează
#12487

Cel mai frecvent motiv pentru care un ThreadAbortException este de asteptare Response.End, Response.Redirect sau Server.Transfer . Microsoft a publicat câteva funcții sugerate care ar trebui utilizate în locul acestor funcții.

0
0
Comentarii (0)
Jon Sagara
5 noiembrie 2008 в 3:40
2008-11-05T03:40:07+00:00
Mai mult
Sursă
Editează
#264015

Așa cum au spus ceilalți, aceasta apare atunci când apelați Response.End () (care apare când apelați Response.Redirect fără a trece false ca al doilea parametru). Acest lucru funcționează așa cum a fost proiectat; de obicei, dacă apelați Response.Redirect, doriți ca redirecționarea să aibă loc imediat. Consultați aceasta pentru mai multe informații:

Response.Redirect și ThreadAbortException

0
0
Comentarii (0)
Luke Puplett
29 august 2013 в 1:30
2013-08-29T13:30:06+00:00
Mai mult
Sursă
Editează
#18507130

Știind că există (cel puțin) trei API-uri care utilizează intern Thread.Abort , aș dori să răspund în termeni mai practici, cum să aflu ce să fac.

Pentru noi, această eroare a început să fie înregistrată tot timpul. Ce sa schimbat? Am rezolvat o eroare într-o procedură bazată pe baze de date.

Jurnalele log4net au arătat că antetul X-Forwarded-For (fost în spatele unui NLB) a fost adresa IP a Googlebot, 66.249.78.x, care a susținut teoria despre schimbarea sitemap-ului, ceea ce a dus la accesarea cu crawlere a site-ului Google pentru a căuta imagini mai agresive.

Primul lucru a fost să aflăm de ce numai Googlebot a reușit să provoace această problemă. Niciun alt client nu a declanșat calea de cod care utilizează Response.Redirect sau orice altceva.

Deci, în manipularea HttpApplication.Error , am adăugat un cod pentru a înregistra jurnalul extra detaliat cu toate anteturile și majoritatea datelor din HttpResponse și HttpContext a vrut să se jurnalizeze.

Acest lucru lasă-mă să văd că problema a fost că Googlebot folosește un șir de agenți de utilizator iPhone și înarmat cu asta, am reușit să caut codul pentru "iPhone" și să vină cu:

private void CheckIPhoneAccess() { ... }

Și asta folosește un Redirect.

Ce să faci?

Ei bine, pentru această bază de coduri în vârstă, nu merită să repetați toate apelurile Response.Redirect , așa că voi reduce nivelul de logare pentru ThreadAbortException pentru aplicație.

Voi schimba comportamentul crawlerului mobil Googlebot, care nu va duce la "minciuni" despre ceea ce site-ul nostru servește pentru telefoane mobile, deoarece redirecționează doar la prima lovitură, după care citește un cookie și afișează imaginea . Googlebot nu pare să cacheze acel cookie.

Nu este perfect, dar site-ul urmează să fie reconstruit. probabil de o altă echipă care utilizează Scala sau ceva, așa că, în termeni practici, cred că aceasta este o alegere bună. Voi adăuga comentarii și pot revizui ulterior problema, construi o extensie Response.SafeRedirect care încapsulează acest sfat:

De ce răspunsul.Redirect cauzează System.Threading.ThreadAbortException?

Luke

0
0
Comentarii (0)
ValidfroM
29 august 2013 в 1:53
2013-08-29T13:53:49+00:00
Mai mult
Sursă
Editează
#18507699

Motivul pentru care Response.Redirect va da această excepție este asp.net implementarea internă a acestui API cu Thread.Abort (). Atunci când se numește această metodă, se aruncă un ThreadAbortException special. Această excepție nu va fi înghițită de nici un bloc de captură. Acesta va fi aruncat la sfârșitul fiecărui bloc de captură.

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
https://stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire