Chris Phelps
Chris Phelps

Reputation: 228

Can't get Session variable the way I want to

Partial Class Preferences_MyPreferences
    Inherits System.Web.UI.Page

    Dim userID As String = Session("UserID")

This is just a page in asp.net. I want to be able to grab the Session("UserID") but every time I try, I get this error:

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the \\ section in the application configuration.

If I put that Dim userID inside say the Page_Load Event, then it works fine. Why does it have to be inside an event? I want to dim it once, and use it throughout the page.

Upvotes: 1

Views: 1123

Answers (3)

Adam Maras
Adam Maras

Reputation: 26853

You need to read up on ASP.NET Page Lifecycles. The Session object doesn't become available until a certain point in the page lifecycle; if you want to grab the UserID once, you need to do it after the session becomes available.

The reason it doesn't work in your example is that the constructor for your Preferences_MyPreferences page is executed before the request object is available to the page. You should instead load it during the Page_Init or Page_Load event.

Upvotes: 1

Joel Etherton
Joel Etherton

Reputation: 37533

If you declare it as you have there, the variable is initialized and the session variable is expected to be ready for usage, but it is too early in the page life cycle to allow that. The preferred method would be as @p.campbell has suggested and wrap it in a Property or similar method. To answer the question though, the exception is generated because you are attempting to use session before it is available.

Upvotes: 1

p.campbell
p.campbell

Reputation: 100567

Consider wrapping your call to the Session in a property in your code behind?

Public ReadOnly Property UserID() As String
    Get
        Return Session("UserID")
    End Get
End Property

Upvotes: 3

Related Questions