Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

asp.net mvc - need to store some data for the current request

Tags:

asp.net-mvc

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();
like image 884
Shawn Avatar asked Feb 15 '09 19:02

Shawn


2 Answers

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.

like image 190
Teun D Avatar answered Oct 05 '22 23:10

Teun D


Use the HttpContext 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.

like image 36
Chad Moran Avatar answered Oct 06 '22 00:10

Chad Moran