Γραμμένο μπροστά
Όσον αφορά το σχετικό περιεχόμενο του IHttpModule, ρωτήθηκα επίσης κατά τη διάρκεια της συνέντευξης και ένιωσα αόριστα ότι αυτή η διεπαφή έχει μια μέθοδο Init, η οποία μπορεί να καταχωρήσει μια σειρά συμβάντων με τη μέθοδο Init στην κλάση υλοποίησης. Στο σπίτι αυτό το Σαββατοκύριακο, δεν υπάρχει πραγματικά τίποτα να κάνουμε, ακόμα κι αν είναι να ελέγξουμε και να συμπληρώσουμε τα κενά σε αυτό το κομμάτι γνώσης.
Το IHttpModule λειτουργεί
Οι φίλοι που είναι εξοικειωμένοι με asp.net κύκλο ζωής θα πρέπει να γνωρίζουν ότι η εκτέλεση του HttpModule εκτελείται πριν από το HttpHandler και μετά την εκτέλεση μιας σειράς συμβάντων του HttpModule, στη συνέχεια την εκτέλεση του HttpHandler και στη συνέχεια την εκτέλεση ορισμένων συμβάντων του HttpModule. Για λεπτομέρειες, ανατρέξτε στο παρακάτω διάγραμμα κύκλου ζωής.
Το HttpHandler είναι το μέρος για να χειριστείτε το αίτημα http, το HttpModule είναι ο "μόνος τρόπος" για ένα αίτημα HTTP, επομένως μπορείτε να προσθέσετε μερικές απαιτούμενες πληροφορίες πάνω από τις πληροφορίες αιτήματος HTTP πριν αυτό το αίτημα HTTP περάσει στο πραγματικό κέντρο επεξεργασίας αιτημάτων (HttpHandler) ή να κάνετε κάποια πρόσθετη εργασία στις πληροφορίες αίτησης HTTP που έχουν υποκλαπεί. Ή σε ορισμένες περιπτώσεις, απλώς τερματίστε τα αιτήματα HTTP που πληρούν ορισμένες προϋποθέσεις, τα οποία μπορούν να λειτουργήσουν ως φίλτρο.
Ένα αίτημα HTTP θα μεταβιβαστεί στο κοντέινερ HttpHandler κάποια στιγμή (συμβάν ResolveRequestCache) κατά την παράδοση του κοντέινερ HttpModule. Μετά από αυτό το συμβάν, το κοντέινερ HttpModule δημιουργεί μια παρουσία εισόδου του HttpHandler, αλλά αντί να εγκαταλείψει τον έλεγχο της αίτησης HTTP, συνεχίζει να ενεργοποιεί τα συμβάντα AcquireRequestState και PreRequestHandlerExcute. Μετά το συμβάν PreRequestHandlerExcute, το παράθυρο HttpModule δίνει προσωρινά τον έλεγχο στο κοντέινερ HttpHandler για την επεξεργασία πραγματικών αιτήσεων HTTP.
Μέσα στο κοντέινερ HttpHandler, εκτελείται η μέθοδος ProcessRequest για τη διαχείριση αιτημάτων HTTP. Αφού το κοντέινερ HttpHandler επεξεργαστεί ολόκληρο το αίτημα HTTP, επιστρέφει τον έλεγχο στο HttpModule, το οποίο συνεχίζει να μεταβιβάζει την επεξεργασμένη ροή πληροφοριών αιτήματος HTTP επίπεδο προς επίπεδο μέχρι να επιστραφεί στον πελάτη.
Ένα παράδειγμα
Δομή του έργου
Κώδικας MyHttpModule
Καταχωρίστε ένα προσαρμοσμένο HttpModule στο web.config
Περιήγηση στη σελίδα Default.aspx
Ποια είναι λοιπόν η σειρά εκτέλεσης μιας σειράς γεγονότων στον κύκλο ζωής;
Δείτε τα αποτελέσματα
Χρησιμοποιήστε το HttpModule για να τερματίσετε το αίτημα Http
έκβαση
περίληψη
Εδώ εισάγουμε την πιο σημαντική διεπαφή στον κύκλο ζωής του asp.net, το IHttpModule, το οποίο μπορεί να περιγραφεί ως διεπαφή συμβάντων, επειδή στη μέθοδο Init στην κλάση υλοποίησης, μπορούν να καταχωρηθούν διάφορα συμβάντα στον κύκλο ζωής και να οριστούν διάφορες λογικές στο συμβάν.
|