tags:

views:

169

answers:

2

I am writing a user authentication class. During the request there are a lot of references to the current user, so I would like to cache it in memory instead of calling the database ala singleton. I am thinking about using session and clearing it at the end of every request.

like:

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

then in app_end request:

     Session.Clear();
+5  A: 

Use the HttpConext class. You can get to it either in the context of a controller of HttpContext.Current.

The HttpContext.Items collection is what you want to use.

Chad Moran
+5  A: 
HttpContext.Items["user"] = user;

You can reference the context items during the entire request and it will be cleaned up at the end of it.

Teun D