PRB: Η ThreadAbortException προκύπτει εάν χρησιμοποιείτε χρήση, Response.Redirect ή Server.Transfer

Συμπτώματα

Εάν χρησιμοποιείτε τη Χρήση, Response.Redirect, ή
Τη μέθοδο Server.Transfer , παρουσιάζεται μια εξαίρεση ThreadAbortException . Μπορείτε να χρησιμοποιήσετε μια πρόταση try-catch για τον εντοπισμό αυτής της εξαίρεσης.

Αιτία

Η μέθοδος Χρήση τερματίζει την εκτέλεση της σελίδας και μεταφέρει την εκτέλεση στο συμβάν Application_EndRequest στη διοχέτευση συμβάντων της εφαρμογής. Η γραμμή του κώδικα που ακολουθεί Χρήση δεν εκτελείται.

Αυτό το ζήτημα παρουσιάζεται στις μεθόδους Response.Redirect και Server.Transfer , επειδή και οι δύο μέθοδοι καλούν Χρήση εσωτερικά.

Προτεινόμενη αντιμετώπιση

Για να επιλύσετε αυτό το ζήτημα, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους:

  • Για Χρήση, καλέστε τη μέθοδο HttpContext.Current.ApplicationInstance.CompleteRequest αντί για Χρήση για να παρακάμψετε την εκτέλεση κώδικα στο συμβάν Application_EndRequest .
  • Για Response.Redirect, χρησιμοποιήστε μια υπερφόρτωση, Response.Redirect (συμβολοσειρά url, bool endResponse) που μεταβιβάζει την τιμή false για την παράμετρο endResponse , για να κάνετε απόκρυψη της εσωτερικής κλήσης για Χρήση. Για παράδειγμα:
      Response.Redirect ("nextpage.aspx", false);
    Εάν χρησιμοποιήσετε αυτήν τη λύση, εκτελείται ο κώδικας που ακολουθεί Response.Redirect .
  • Για τη μέθοδο Server.Transfer, χρησιμοποιήστε τη μέθοδο Server.Execute .

Κατάσταση

Αυτή η συμπεριφορά οφείλεται στη σχεδίαση.
Ιδιότητες

Αναγνωριστικό άρθρου: 312629 - Τελευταία αναθεώρηση: 21 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια