2009-02-15 6 views
18

J'écris une classe d'authentification d'utilisateur. Pendant la requête il y a beaucoup de références à l'utilisateur courant, donc je voudrais le mettre en cache en mémoire au lieu d'appeler la base de données ala singleton. Je pense utiliser la session et l'effacer à la fin de chaque requête.asp.net mvc - besoin de stocker des données pour la demande en cours

comme:

public static User Current() { 
    if (Session["current-user"] == null) { 
      Session["current-user"] = GetUserFromDB(); // example function, not real 
    } 
    return (User)Session["current-user"]; 

puis à la demande de app_end:

 Session.Clear(); 

Répondre

31
HttpContext.Items["user"] = user; 

Vous pouvez référencer les éléments de contexte pendant toute la demande et il sera nettoyé à la fin de celui-ci.

+0

Dans ViewContext.HttpContext.Items – Spikolynn

6

Utilisez la classe HttpContext. Vous pouvez y accéder soit dans le contexte d'un contrôleur de HttpContext.Current.

La collection HttpContext.Items est ce que vous voulez utiliser.

Questions connexes