Accessing session from thread

J

John

Is there a safe way to gain access to the session object from inside a
spawned thread, in ASP.NET?

I'm familiar with the principle of creating a data storage object, passing a
reference to the thread, and then adding the object to the session. But this
won't work when using StateServer because of serialization (session only
contains a snapshop of the object at the point I added it, and the changes
made by the thread occur elsewhere).

Ideally I'd like:

void MyThreadWorker()
{
HttpSession sess = somemagicroutine();
sess["counter"] = 1;
}

Thanks,

John
 
J

John Timney \( MVP \)

As long as the pipeline is still active, then the context of the session may
be available, but its always a risky thing to rely on, and you might be
better taking a snapshot of session items into a collection at thread start
and passing that to the thread, rather than maintaining access to the live
session.

Read this for a pointer:

http://www.odetocode.com/Articles/112.aspx

--
Regards

John Timney
ASP.NET MVP
Microsoft Regional Director
 
J

John

Thanks John,

But a snapshot won't allow me to signal things from inside the worker thread
to the main threads (other aspx pages). For me the problem is outgoing
information, not incomming.

The only strategy I can see is to use the database - which seems a bit
over-powered for the job!

John


John Timney ( MVP ) said:
As long as the pipeline is still active, then the context of the session
may be available, but its always a risky thing to rely on, and you might
be better taking a snapshot of session items into a collection at thread
start and passing that to the thread, rather than maintaining access to
the live session.

Read this for a pointer:

http://www.odetocode.com/Articles/112.aspx

--
Regards

John Timney
ASP.NET MVP
Microsoft Regional Director

John said:
Is there a safe way to gain access to the session object from inside a
spawned thread, in ASP.NET?

I'm familiar with the principle of creating a data storage object,
passing a reference to the thread, and then adding the object to the
session. But this won't work when using StateServer because of
serialization (session only contains a snapshop of the object at the
point I added it, and the changes made by the thread occur elsewhere).

Ideally I'd like:

void MyThreadWorker()
{
HttpSession sess = somemagicroutine();
sess["counter"] = 1;
}

Thanks,

John
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top