Session state lost after accessing database

Discussion in 'ASP .Net' started by William, Aug 28, 2004.

  1. William

    William Guest

    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.
     
    William, Aug 28, 2004
    #1
    1. Advertising

  2. William

    Scott Allen Guest

    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

    On Sat, 28 Aug 2004 18:01:03 +0200, "William" <>
    wrote:

    >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.
    >
     
    Scott Allen, Aug 28, 2004
    #2
    1. Advertising

  3. William

    William Guest

    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" <bitmask@[nospam].fred.net> wrote in message
    news:...
    > 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
    >
    > On Sat, 28 Aug 2004 18:01:03 +0200, "William" <>
    > wrote:
    >
    > >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.
    > >

    >
     
    William, Aug 28, 2004
    #3
  4. William

    [MSFT] Guest

    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
     
    [MSFT], Aug 30, 2004
    #4
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. shamanthakamani
    Replies:
    1
    Views:
    3,553
    Natty Gur
    Nov 20, 2003
  2. Not Liking Dot Net Today
    Replies:
    0
    Views:
    674
    Not Liking Dot Net Today
    Apr 21, 2004
  3. Maciek
    Replies:
    0
    Views:
    8,307
    Maciek
    Sep 15, 2005
  4. jnickfl1
    Replies:
    0
    Views:
    637
    jnickfl1
    Sep 18, 2006
  5. Harry Haller
    Replies:
    0
    Views:
    1,689
    Harry Haller
    Nov 7, 2006
Loading...

Share This Page