Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 17081|Απάντηση: 2

[ASP.NET] HttpContext.Current.Items

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 11/2/2018 10:42:10 π.μ. | | | |

Το HTTP είναι ένα πρωτόκολλο χωρίς κατάσταση. Κάθε αίτημα είναι ανεξάρτητο και η εκτέλεση και τα αποτελέσματά του δεν σχετίζονται άμεσα με το προηγούμενο αίτημα και το επόμενο αίτημα και δεν θα επηρεαστούν άμεσα από την απάντηση στο προηγούμενο αίτημα, ούτε θα επηρεάσουν άμεσα την απάντηση στο επόμενο αίτημα.

Στην πραγματικότητα, το σύστημά μας συχνά υποστηρίζει τους χρήστες να μοιράζονται τα ίδια δεδομένα (κατάσταση) μεταξύ του προγράμματος περιήγησης πελάτη και του διακομιστή πολλαπλά αιτήματα, όπως τα στοιχεία του λογαριασμού σύνδεσης του χρήστη. Επομένως, το ASP.NET παρέχει πολλές μεταβλητές για τη διαχείριση της κατάστασης: κατάσταση εφαρμογής, κατάσταση περιόδου λειτουργίας, κατάσταση προβολής κ.λπ.

Το αντικείμενο HttpContext προορίζεται μόνο για μία αίτηση http.Οι ιδιότητες αυτής της κλάσης περιλαμβάνουν επίσης αντικείμενα αιτήματος, αντικείμενα απόκρισης, αντικείμενα συνεδρίας κ.λπ. Αυτή είναι η συλλογή Items της κλάσης HttpContext, η οποία περιέχει ένα αντικείμενο πίνακα κατακερματισμού με τη μορφή κλειδιού-τιμής.

Αρχικά, ας δούμε τον σκοπό του HttpContext.Current.Items, το οποίο λειτουργεί μόνο σε ένα μόνο αίτημα χρήστη (HttpContext.Current.Items ισχύει για ένα μόνο HTTPRequest). Όταν ολοκληρωθεί αυτό το αίτημα, η συλλογή τεκμηρίων θα χαθεί όταν οι πληροφορίες του διακομιστή αποσταλούν πίσω στο πρόγραμμα περιήγησης. Το αντικείμενο Session είναι για τη συνεδρία του χρήστη, δηλαδή ενεργεί σε πολλαπλά αιτήματα χρήστη και οι πληροφορίες χάνονται μετά τη λήξη της συνεδρίας.

Δεδομένου ότι το HttpContext.Current.Items έχει τόσο σύντομο κύκλο ζωής, υπό ποιες συνθήκες μπορεί να χρησιμοποιηθεί; Σημειώνεται εδώ ότι το HttpContext.Current.Items μπορεί να χρησιμοποιηθεί κατά την κοινή χρήση δεδομένων μεταξύ HttpModule και HTTPHandler, επειδή κάθε αίτημα χρήστη περνά από τη διοχέτευση χρόνου εκτέλεσης HTTP HttpModule, HTTPHandler. Όταν εφαρμόζετε τη μέθοδο IHttpMoudle για να μεταβιβάσετε πληροφορίες στο αίτημα χρήστη μέσω HttpMoudle. Μπορείτε να χρησιμοποιήσετε το HttpContext.Current.Items για να μεταφέρετε δεδομένα σε διαφορετικές σελίδες αιτημάτων και διαφορετικά HttpModules, αλλά μόλις τελειώσει το αίτημα και αναρτηθούν τα δεδομένα, τα δεδομένα σε αυτήν τη συλλογή θα χαθούν από μόνα τους. Όπως φαίνεται στο παρακάτω σχήμα:




Επιπλέον, όταν η σελίδα διακομιστή μεταπηδά (Server.Execute/Server.Transfer), μπορούμε να χρησιμοποιήσουμε το HttpContext.Current.Items για να περάσουμε δεδομένα μεταξύ των δύο φορμών.
Προφανώς, εάν αλλάξετε το Server.Transfer σε Response.Redirect, δεν θα μπορείτε να λάβετε τα δεδομένα στο HttpContext.Current.Items στη νέα σελίδα επειδή είναι διαφορετικό αίτημα Http. System.NullReferenceException: Η αναφορά αντικειμένου δεν έχει οριστεί στην παρουσία του αντικειμένου.





Προηγούμενος:20 λεπτά για την έκδοση εικονικού νομίσματος με βάση το δίκτυο Ethereum
Επόμενος:Σκεπτόμενοι τα σενάρια χρήσης και τη σημασία των ευφυών τερματικών
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 30/6/2023 8:35:38 μ.μ. |
ASP.NET τη διαφορά μεταξύ ThreadStatic, CallContext και HttpContext
https://www.itsvse.com/thread-10620-1-1.html
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com