ASP.NET out of process session state

Αποτελεί ένα από τα δυνατά χαρακτηριστικά του ASP.NET. Πρόκειται για τη δυνατότητα να σώζεις το session state (ό,τι σώζουμε στο System.Web.HttpContext.Current.Session) “έξω” από τη μνήμη του WWW worker process - w3wp. Προσφέρεται σε δύο flavors out-of-the-box: αποθήκευση στο StateServer ή στον SQL Server. Φυσικά παρέχεται η επιλογή και για custom υλοποίηση (μια ενδιαφέρουσα είναι και η υλοποίηση με χρήση του Distributed Cache Framework Velocity).

Στην ακόλουθη λίστα παραθέτω μερικά tips που πιθανά σας φανούν χρήσιμα όταν χρησιμοποιείτε αυτή την επιλογή:

  • Τα αντικείμενα που σώζεται στο session πρέπει να είναι “Serializable”
  • Μπορείτε να χρησιμοποιήσετε web garden.
  • Για καλύτερo performance χρησιμοποιήστε το διακόπτη SessionState=ReadOnly στις σελίδες που δε γράφουν στο session.
  • Εάν το aspnet_state service βρίσκεται σε άλλα φυσικά μηχανήματα από τους web servers, ενεργοποιήστε το Allow Remote Connection, αλλάζοντας την τιμή στο αντίστοιχο registry entry HKLM/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters/AllowRemoteConnection
  • Σε φάρμα χωρίς session affinity –τυπικό παράδειγμα χρήσης out-of-process session state management, xρησιμοποιήστε το ίδιο encryption και validation key (δείτε εδώ για περισσότερα).
  • Εάν χρησιμοποιούμε NLB φάρμα το application path του web site πρέπει να είναι το ίδιο στη metabase του IIS 6.0 –προσοχή το όνομα είναι case sensitive.
  • Το out-of-process session state management είναι κατά κανόνα πολύ πιο αργό από το in-process.