Server. Transfer vs Response. Redirect
Ο διακομιστής και η απάντηση είναι και τα δύο αντικείμενα στο ASP. NET. Το αντικείμενο διακομιστή παρέχει μεθόδους και ιδιότητες για διάφορες εργασίες που σχετίζονται με έναν διακομιστή. Η μεταφορά είναι μια μέθοδος του αντικειμένου διακομιστή και στέλνει πληροφορίες της τρέχουσας κατάστασης σε άλλο αρχείο.asp για επεξεργασία. Το αντικείμενο Response περιγράφει μεθόδους και ιδιότητες που σχετίζονται με την απόκριση ενός διακομιστή. Η ανακατεύθυνση είναι μια μέθοδος του αντικειμένου Response και στέλνει ένα μήνυμα στο πρόγραμμα περιήγησης κάνοντάς το να συνδεθεί σε διαφορετική διεύθυνση URL. Παρόλο που τόσο το Server. Transfer όσο και το Response. Redirect μπορούν να χρησιμοποιηθούν για τη μεταφορά ενός χρήστη από τη μια σελίδα στην άλλη, διαφέρουν ως προς τον τρόπο με τον οποίο εκτελούν πραγματικά αυτήν την εργασία.
Τι είναι Response. Redirect;
Η Ανακατεύθυνση είναι μια μέθοδος στο αντικείμενο Response. Όταν καλείται η μέθοδος απόκρισης, στέλνει τον κωδικό HTTP 302 και τη διεύθυνση URL της ζητούμενης ιστοσελίδας στο πρόγραμμα περιήγησης των χρηστών. Ο κωδικός HTTP 302 ενημερώνει το πρόγραμμα περιήγησης των χρηστών ότι ο ζητούμενος πόρος βρίσκεται σε διαφορετική διεύθυνση URL. Όταν το πρόγραμμα περιήγησης λάβει τον κωδικό, ανοίγει τον πόρο στη νέα θέση. Η ιστοσελίδα που ζητήθηκε μπορεί να βρίσκεται στον ίδιο διακομιστή με τη σελίδα που περιείχε το αίτημα ή θα μπορούσε να βρίσκεται σε κάποιον άλλο διακομιστή. Όταν ζητάτε μια ιστοσελίδα που βρίσκεται στον ίδιο διακομιστή με την τρέχουσα σελίδα, η μέθοδος απόκρισης μπορεί να χρησιμοποιηθεί ως εξής:
Response. Redirect("nextPage.html");
Όταν ζητάτε μια ιστοσελίδα που βρίσκεται σε άλλο διακομιστή, η μέθοδος απόκρισης μπορεί να χρησιμοποιηθεί ως εξής:
Response. Redirect("https://www.newServer.com/newPage.aspx");
Τι είναι Server. Transfer;
Όπως αναφέρθηκε προηγουμένως, η μεταφορά είναι μια μέθοδος του Αντικειμένου διακομιστή. Όταν καλείται η μέθοδος μεταφοράς, το αρχικό αίτημα τροποποιείται για να μεταφερθεί σε κάποια άλλη σελίδα στον ίδιο διακομιστή. Όταν ζητείται μια νέα σελίδα χρησιμοποιώντας το διακομιστή. Μεταφορά, η διεύθυνση URL που εμφανίζεται στο πρόγραμμα περιήγησης ιστού των χρηστών δεν αλλάζει. Αυτό συμβαίνει επειδή η μεταφορά γίνεται στην πλευρά του διακομιστή και το πρόγραμμα περιήγησης δεν έχει καμία γνώση σχετικά με τη μεταφορά. Χρησιμοποιώντας τη δεύτερη υπερφόρτωση για το Server. Transfer (διαδρομή συμβολοσειράς, bool saveForm) και ορίζοντας τη δεύτερη παράμετρο ως true, οι αναρτημένες μεταβλητές φόρμας και οι συμβολοσειρές ερωτήματος μπορούν να διατεθούν στη δεύτερη σελίδα.
Ποια είναι η διαφορά μεταξύ Server. Transfer και Response. Redirect;
Ακόμη και αν και το Server. Transfer και το Response. Redirect μπορούν να χρησιμοποιηθούν για τη μεταφορά ενός χρήστη από τη μια σελίδα στην άλλη, υπάρχουν ορισμένες διαφορές μεταξύ των δύο μεθόδων. Εκτός από τη φαινομενική συντακτική διαφορά, το Response. Redirect κάνει μια διαδρομή μετ' επιστροφής στον διακομιστή, ενώ το Server. Transfer αλλάζει την εστίαση του διακομιστή web σε διαφορετική ιστοσελίδα. Επομένως, χρησιμοποιώντας το Server. Transfer, οι πόροι του διακομιστή μπορούν να διατηρηθούν. Από την άλλη πλευρά, το Response. Redirect θα μπορούσε να χρησιμοποιηθεί για την ανακατεύθυνση του χρήστη σε μια ιστοσελίδα σε άλλο διακομιστή, ενώ το Server. Transfer μπορεί να χρησιμοποιηθεί μόνο για την ανακατεύθυνση του χρήστη σε ιστοσελίδες στον ίδιο διακομιστή. Επίσης, χρησιμοποιώντας το Server. Transfer, οι ιδιότητες της προηγούμενης σελίδας είναι προσβάσιμες από τη νέα σελίδα, αλλά αυτό δεν είναι δυνατό με το Response. Redirect. Επιπλέον, το Response. Redirect αλλάζει τη διεύθυνση URL στη γραμμή διευθύνσεων του προγράμματος περιήγησης κατά την πρόσβαση στη νέα σελίδα, αλλά κατά τη χρήση του διακομιστή. Μεταφορά της αρχικής διεύθυνσης URL διατηρείται και το περιεχόμενο της σελίδας μόλις αντικαθίσταται. Επομένως, ο χρήστης δεν μπορεί να το χρησιμοποιήσει για να προσθέσει σελιδοδείκτη στη νέα σελίδα.