73 votes

Pourquoi est-ce que j'obtiens "Thread was being aborted" en ASP.NET ?

Je ne suis pas sûr de la raison pour laquelle cela se produit et je n'ai jamais explicitement interrompu les threads, donc c'est un peu une surprise. Mais je consigne les exceptions et je vois :

System.Threading.ThreadAbortException - Le fil a été interrompu.

Cela semble se produire lors d'un appel à System.Threading.WaitHandle.WaitOne . Je ne sais pas jusqu'où va cette exception. Je ne pense pas que mes threads se terminent jamais, parce que j'attrape le journal et avale l'erreur.

Pourquoi est-ce que j'obtiens ces erreurs ? Peut-être que c'est lorsque je ferme de force mon serveur ou que je lui demande de redémarrer ? Si ce n'est pas le cas, qu'est-ce qui peut les provoquer ?

0 votes

Pouvez-vous montrer le code que vous avez dans Application_Start ?

0 votes

@rick : Je ne sais pas ce que vous espérez trouver mais voici un extrait. var obj1=new MyServiceObject(); srv1 = new Thread(obj1.Queue); ... srv1.Start() . Notez que obj1 n'est pas à l'intérieur d'un bloc using afin qu'il ne soit pas éliminé prématurément. C'est juste un simple thread que je crée au démarrage.

0 votes

Je pense que votre variable srv1 perd de sa portée et tue le fil. Vous devrez attendre qu'il se termine, ou changer la portée pour une portée de niveau supérieur. (Je réalise que cette réponse a 10 ans de retard ; cependant, j'ai pensé que quelqu'un d'autre pourrait voir cela). J'ai eu un problème similaire avec la journalisation dans une application asp.net - j'essayais de me connecter dans un thread séparé et le thread mourait constamment. Après avoir modifié la portée de la variable à laquelle il était affecté, le ramasseur d'ordures l'a laissé tranquille.

8voto

Cette erreur peut être causée en essayant de terminer une réponse plus d'une fois. Comme d'autres réponses l'ont déjà mentionné, il existe plusieurs méthodes pour mettre fin à une réponse (telles que Response.End ou Response.Redirect ). Si vous en appelez plusieurs à la suite, vous obtiendrez cette erreur.

Je suis tombé sur cette erreur lorsque j'ai essayé d'utiliser Response.End après avoir utilisé Response.TransmitFile ce qui semble également mettre fin à la réponse.

0 votes

Il y a de fortes chances pour que cette erreur se produise si l'on fait quoi que ce soit avec la réponse après qu'elle ait été terminée.

1voto

Cosmin Points 860

J'ai eu cette erreur quand j'ai fait un Response.Redirect après une connexion réussie de l'utilisateur.

Je l'ai réparé en faisant un FormsAuthentication.RedirectFromLoginPage à la place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X