Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing the ASP.NET Cache from a Separate Thread?

Normally i have a static class that reads and writes to HttpContext.Current.Cache

However since adding threading to my project, the threads all get null reference exceptions when trying to retrieve this object.

Is there any other way i can access it, workarounds or another cache i can use?

like image 383
maxp Avatar asked Mar 13 '10 00:03

maxp


2 Answers

The System.Web.Cache object itself is thread safe.

The issue is how to obtain a reference to it in a way that works throughout your application. HttpContext.Current returns null unless it is called on a thread that is handling an ASP.NET request. An alternative way to get the Cache is through the static property System.Web.HttpRuntime.Cache. This will avoid the problems with the HttpContext.

like image 72
Jason Kresowaty Avatar answered Nov 15 '22 13:11

Jason Kresowaty


If your project is an ASP.NET project, then it was multithreaded even before you "added threading".

Check to see if HttpContext.Current is non-null before referencing HttpContext.Current.Cache.

Also, please post the complete exception you're receiving, and show us the code that references the cache.

like image 40
John Saunders Avatar answered Nov 15 '22 13:11

John Saunders