Session state lost after accessing database

W

William

Hi

I have an ASP.NET application that connects to an Access database.
Everything works fine except for the Session object. Data in the session
object is lost after I've made a call to the database.

To test, I've created two test aspx pages. Test1.aspx contains two buttons.
The first button sets values in the session object and then navigates to
Test2.aspx. Test2.aspx only displays the values in the session object.
The second button creates a connection to the database, executes a SQL
statement and then does exactly the same as the first button. (Code is
copied from first button). In Test2.aspx, the values set is seen as Nothing.

For the connection to the database, I tried:
- Created a custom data class that creates the connection and provides
access to the
database. Connection is a OledbConnection connecting via OLEDB JET.
- Used the same class but changed the connection to OdbcConnection.
- Created the connection directly from the aspx page.

The SQL statement executes with no problem, but as soon as the procedure /
function has finished executing, the session data is lost. I changed the
connection to test it on a SQL Server database. Works fine. However, the
server where the application is to be deployed does not have SQL Server and
we must use an Access database. I've done something similar in old ASP
before and it worked fine.

Any help, please.
 
S

Scott Allen

Hi William:

Are you doing a Response.Redirect after setting a session variable for
the first time?

Session["SomeValue"] = 42;
Response.Redirect("test2.aspx");

The first time you write to the session for a client ASP.NET creates a
cookie to send down to the browser. On following requests the browser
sends the cookie to the server and ASP.NET can find the user's
associated session. Unfortunately, Response.Redirect ends the request
early and the session cookie is lost.

One solution is to use:

Response.Redirect("test2.aspx", false);

The second parameter tells ASP.NET not to abort the request thread
early and the session survives.

HTH,
 
W

William

Hi

Actually I've been using Server.Transfer and also tried just a normal
hyperlink. I can even have the two buttons on the same webform. One button
updates values in the session state and executes a SQL statement while the
other just displays the session values in a label control and the session
values will still be lost.

Regards

William



Scott Allen said:
Hi William:

Are you doing a Response.Redirect after setting a session variable for
the first time?

Session["SomeValue"] = 42;
Response.Redirect("test2.aspx");

The first time you write to the session for a client ASP.NET creates a
cookie to send down to the browser. On following requests the browser
sends the cookie to the server and ASP.NET can find the user's
associated session. Unfortunately, Response.Redirect ends the request
early and the session cookie is lost.

One solution is to use:

Response.Redirect("test2.aspx", false);

The second parameter tells ASP.NET not to abort the request thread
early and the session survives.

HTH,

--
Scott
http://www.OdeToCode.com

Hi

I have an ASP.NET application that connects to an Access database.
Everything works fine except for the Session object. Data in the session
object is lost after I've made a call to the database.

To test, I've created two test aspx pages. Test1.aspx contains two buttons.
The first button sets values in the session object and then navigates to
Test2.aspx. Test2.aspx only displays the values in the session object.
The second button creates a connection to the database, executes a SQL
statement and then does exactly the same as the first button. (Code is
copied from first button). In Test2.aspx, the values set is seen as Nothing.

For the connection to the database, I tried:
- Created a custom data class that creates the connection and provides
access to the
database. Connection is a OledbConnection connecting via OLEDB JET.
- Used the same class but changed the connection to OdbcConnection.
- Created the connection directly from the aspx page.

The SQL statement executes with no problem, but as soon as the procedure /
function has finished executing, the session data is lost. I changed the
connection to test it on a SQL Server database. Works fine. However, the
server where the application is to be deployed does not have SQL Server and
we must use an Access database. I've done something similar in old ASP
before and it worked fine.

Any help, please.
 
M

[MSFT]

Hi William,

How did you set the session configration in web.config? Additionlly, if we
didn't redirect to Test2.aspx, just display the sessiob variant in same
page (Test1.aspx), like:

Response.Wrtie(var);

Will this work fine?

Luke
 

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

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top