Link to home
Start Free TrialLog in
Avatar of crich
crich

asked on

ASP.NET Session Variables

Hi there,
 I have the following code on my page to try and retreive the value of a log in session variable:

<script runat="server">
Sub Page_Load (s as object, e as eventargs)
Dim objChkUsername As String
Dim edit As Integer
objChkUsername = Session("chkusername").ToString()
If objChkUsername Is Nothing Then
edit = 0
Else edit = 1
End If
End Sub
</script>

I get the following error though:

[NullReferenceException: Object reference not set to an instance of an object.]

   ASP.index_aspx.Page_Load(Object s, EventArgs e) in D:\inetpub\wwwroot\moorfieldsresearch.org.uk\process\index.aspx:6
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +750

Can anyone suggest where i am going wrong as i am new to asp.net and can't find any simple enough information on the net!

Thanks,
Richard



 
Avatar of TimCottee
TimCottee
Flag of United Kingdom of Great Britain and Northern Ireland image

Hi crich,

Probably because you don't specify what namespace the session object is in. Either include it as an import or:

objChkUserName = HttpContext.Current.Session("chkusername").ToString()

Tim Cottee
Brainbench MVP for Visual Basic
http://www.brainbench.com
Avatar of crich
crich

ASKER

I have tried that but i get the same error!
From time to time I get the same error if I try to call a session object that has no value.  You might try this

if Session("chkusername").ToString()  &  "" <> "" Then
     objChkUsername = Session("chkusername").ToString()
     Edit = 1
Else
     Edit= 0
End If
Avatar of crich

ASKER

Still the same error!
Avatar of crich

ASKER

does anyone know how to check a session variable in asp.net?
ASKER CERTIFIED SOLUTION
Avatar of YZlat
YZlat
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
<script runat="server">
Sub Page_Load (s as object, e as eventargs)
        Dim objChkUsername As String= Session("chkusername")
        Dim edit As Integer
 
        If IsDBNull(objChkUsername)  Or objChkUsername=" "  Then
              edit = 0
        Else
              edit = 1
        End If
    End Sub
</script>
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
First line from daffodils should be

If Not Nothing(Session("chkusername")) Then

Good luck
Avatar of crich

ASKER

hi there,
Thank you all for helping to work that out, it seems the session variable may have been empty. I will give main points to yzlat and some to daffodils. I have a new problem now however, which i will give out more points for:

I am trying to show text on the webpage if the value of edit = 1 but i get another error:

Name 'edit' is not declared.

with this code:

<% If edit = 1 Then %>
EDIT MODE
<% End If  %>

Apologies in advance for asking what must be very basic questions. I find these are the ones that are very hard to find answers for sometimes!
Why not do this server side?  something like this

dim edit as integer

If Edit = 1 then
     label1.text = "whatever you want to say on the page"
Else
    label1.text = "Whatever you say for this condition"
End If
It would probably be best if you closed out this questions and started another.  You can reference this one in the new question.
firstly take the procedure out of the load event just incase the error is to do with the vars in the load procedure call, and set them to run from and onclick event of a button, I say this because it has happened before despite how unlikely it may be.

Are you writing this in the code behind ?

if so then as previously standard practice is to vlidate the source exists prior to setting and objects value to it.

if the session var exists then do something else do something else leave the edit value be

dim edit as integer = 0
if not IsNothing(session("MySessionVar")) then edit=1
Hi all, got similar problem on handling of Session in ASP.NET.....

I am using ASP.NET with C#. I always face the problem of session expire. Is there any way of setting session time out duration.
its set in the web.config file look it up or post a topic with points
Dear friend replace your code with the following:
<script runat="server">
Sub Page_Load (s as object, e as eventargs)
Dim objChkUsername As String
Dim edit As Integer
objChkUsername = Convert.ToString(Session("chkusername"))
If objChkUsername Is Nothing Then
edit = 0
Else edit = 1
End If
End Sub
</script>

It will definitely work. Actually your session variable is not initialized prior to use. Thats why it contains 'NULL' value. And when your are going to use it with ToString() method then the exception is occuring. As Tostring() does not handle 'NULL' value. So if you use Convert.ToString() then no exception will occur as it handles 'NULL' automatically. And in your string variable objChkUsername 'NULL' will be assigned. If you are going to assign value to objChkUsername, checking whether Session("chkusername") is null or not and using ToString() there the you are doing same mistake, and exception will occur to check in the if statement.