Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Thread was being aborted

Îåêßíçóå áðü ôï ìÝëïò Παπαδημητρίου Γεώργιος. Τελευταία δημοσίευση από το μέλος Παπαδημητρίου Γεώργιος στις 09-10-2007, 22:10. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-10-2007, 19:59 36032

    Thread was being aborted

    Γεια χαρα,

    θα ηθελα να ρωτησω για ποιο λογο παρουσιαζεται σφαλμα "Thread was being aborted" (με τη βοηθεια try catch)
    οταν εκτελειται το ακολουθο εντυπωσιακο κομματι κωδικα.

    Response.Redirect("~/Members/RegistrationSuccess.aspx?Success=true")

    Το προβλημα ειναι οτι στο catch εχω το δευτερο  εντυπωσιακο κομματι κωδικα
    Response.Redirect("~/Members/RegistrationSuccess.aspx?Success=false")

    Οποτε καταλαβαινετε τι ακολουθει.

    Ευχαριστω!

  •  09-10-2007, 20:23 36035 σε απάντηση της 36032

    Απ: Thread was being aborted

    Αν προσέξες το documentation της Response.Redirect θα δεις ότι έχει δύο παραλλαγές: μία που δέχεται μόνο URL και μία που δέχεται και μία boolean παράμετρο. Η πρώτη μρφή σταματάει αμέσως την εκτέλεση της σελίδας (κοινώς, κάνει abort) και μεταφέρει την εκτέλεση στη νέα σελίδα. Με λίγα λόγια, κάνει Thread.Abort. Το ίδιο γίνεται αν καλέσεις την δεύτερη μορφή με την boolean παράμετρο true. Ο λόγος που υπάρχουν οι δύο αυτές μορφές είναι ότι παλιά (μιλάμε για προ-.NET ) υπήρχε μόνο η απλή Response.Redirect η οποία σε μετέφερε αμέσως στην νέα σελίδα. Τότε, στον κόσμο της VBScript, δεν υπήρχαν threads και exceptions οπότε κανείς δεν νοιαζόταν.

    Με άλλα λόγια, η συμπεριφορά είναι by design.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  09-10-2007, 20:30 36036 σε απάντηση της 36035

    Απ: Thread was being aborted

    Superb!

    Σε ευχαριστώ.

  •  09-10-2007, 20:56 36037 σε απάντηση της 36032

    Απ: Thread was being aborted

    Εφ'όσον πάντως μεταφέρεσαι σε σελίδα στο ίδιο web application, μπορείς να καλέσεις την Server.Transfer αντί της Response.Redirect

    Δες κι εδώ

    http://www.developer.com/net/asp/article.php/3299641
    http://msdn2.microsoft.com/en-us/library/system.web.httpserverutility.transfer.aspx


    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  09-10-2007, 21:00 36039 σε απάντηση της 36037

    Απ: Thread was being aborted

    Και η Server.Transfer έχει παραλλαγές οι οποίες προκαλούν ThreadAbortException ή όχι. Επίσης, δεν γίνεται έλεγχος αν ο χρήστης έχει δικαίωμα να δει τη νέα σελίδα, αν και αυτά τα λέει το δέυτερο link.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  09-10-2007, 22:10 36046 σε απάντηση της 36039

    Απ: Thread was being aborted

    Δεν ξερω εαν θα επρεπε να ανοιξω καινουργιο thread αλλα στην προηγουμενη μου ερωτηση, παρατηρησα οτι μεσα στο catch η εντολη επρεπε να ειναι ετσι (με την πολυτιμη βοηθεια σας)

    Response.Redirect("RegistrationSuccess.aspx?Success=false&ErrorFound=" & Err.Description.ToString, False)

    Αναφερομαι αυτη τη φορα στο path.

    Για ποιο λογο θα πρεπει να ειναι ετσι και οχι ως ακολουθως?

    Response.Redirect("~/Members/RegistrationSuccess.aspx?Success=false&ErrorFound=" & Err.Description.ToString, False)

    To αρχειο RegistrationSuccess.aspx βρισκεται μεσα στο directory Members.

    Ελπιζω να μην σας κουραζω, απλα μου εκανε εντυπωση.

    Ευχαριστω

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems