Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 169597
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T12:39:33+00:00 2026-05-11T12:39:33+00:00

I’ve got an object that handles in memory caching for my data access layer

  • 0

I’ve got an object that handles in memory caching for my data access layer (DAL) and I need to persist it between threads. From what I’ve read the preferred method is to use httpcontext.item with code like so:

   Shared Property DALList() As Dictionary(Of String, DAL)         Get             If Not Web.HttpContext.Current.Items.Contains('_DALList') Then                 Web.HttpContext.Current.Items.Add('_DALList', New Dictionary(Of String, DAL))             End If             Return Web.HttpContext.Current.Items('_DALList')         End Get         Set(ByVal value As Dictionary(Of String, DAL))             If Not Web.HttpContext.Current.Items.Contains('_DALList') Then                 Web.HttpContext.Current.Items.Add('_DALList', value)             Else                 Web.HttpContext.Current.Items('_DALList') = value             End If         End Set     End Property 

Two questions: Is this trying to serialize the object and if so how do I get it to leave the object intact and just reference it in memory instead of serializing it? I need to keep the object intact as it handles DB connections and caching under the covers.

[EDIT]

When I run this I get an error that causes the page to hang. There are two items in the event log.

Faulting application w3wp.exe, version 7.0.6001.18000, time stamp 0x47919ed8, faulting module kernel32.dll, version 6.0.6001.18000, time stamp 0x4791ada5, exception code 0xe053534f, fault offset 0x000000000002649d, process id 0x%9, application start time 0x%10.

and

The state server has closed an expired TCP/IP connection. The IP address of the client is 127.0.0.1. The expired Read operation began at 04/07/2009 20:44:29.

I then rehashed the code to put the items into a dictionary object against the session ID and I get those smae errors. If I use static variables it works fine but then I have my original problem which is that the users would be accessing other users data (clearly that’s not an option).

The rehashed version is as follows: (this works for the first method but not for this one)

Shared _CurrentScope As New Dictionary(Of String, DALScope) Public Shared Property CurrentScope() As DALScope     Get         If Not _CurrentScope.ContainsKey(Web.HttpContext.Current.Session.SessionID & '_CurrentScope') Then             _CurrentScope.Add(Web.HttpContext.Current.Session.SessionID & '_CurrentScope', New DALScope)         End If         Return _CurrentScope(Web.HttpContext.Current.Session.SessionID & '_CurrentScope')     End Get     Set(ByVal value As DALScope)         If Not _CurrentScope.ContainsKey(Web.HttpContext.Current.Session.SessionID & '_Currentscope') Then             _CurrentScope.Add(Web.HttpContext.Current.Session.SessionID & '_Currentscope', value)         Else             _CurrentScope(Web.HttpContext.Current.Session.SessionID & '_Currentscope') = value         End If     End Set End Property 

[EDIT]

Good point onthe locking in the case where ther is more than one webrequest under tha same session. I ended up using the httpcontext.item approach and found that I’m issues were related to the property being a byval instead of byref. I have altered my code to include methods that deal wiht hte objects by ref and now this works.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T12:39:34+00:00Added an answer on May 11, 2026 at 12:39 pm

    HttpContext exists within the lifetime of a single request. I assume by threads here you are talking about maintaining the state accross multiple requests. If so HttpContext.Items is not what you want. You would want to use the Application Cache, or some other caching mechanism.

    As a side note putting an item into HttpContext.Items does not serialize it. If you go with a cache serialization depends on if you have a backing store for the cache, but since this is cache specific it really depends on the cache you choose.

    Edit

    My understanding is that it returns a reference to the same instance you put into the system. I use HttpContext to store my nHibernate sessions in which is quite a lot of stuff. Works fabulous.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 97k
  • Answers 97k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer This is not a programming question, but the answer is… May 11, 2026 at 7:20 pm
  • Editorial Team
    Editorial Team added an answer Did it. Created an action that returned void, and JSON-serialized… May 11, 2026 at 7:20 pm
  • Editorial Team
    Editorial Team added an answer I had a similar requirement. To script insert statements for… May 11, 2026 at 7:20 pm

Related Questions

I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I am currently running into a problem where an element is coming back from
Seemingly simple, but I cannot find anything relevant on the web. What is the
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is
Is it possible to replace javascript w/ HTML if JavaScript is not enabled on

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.