I get an error when I do the following:
if(Session[\"value\"] != null)
{
// code
}
The error i get is this:
Object reference not
The syntax used by you:
if (Session["mySessionVariable"] != null)
{
}
... is the correct way to check for a Session object in ASP.NET. I suspect that the problem is because you are using ASP.NET MVC.
Maybe some of our MVC experts can enlighten us as to the correct way of doing this in ASP.NET MVC.
Edit: I see that Marc Gravell has posted his answer while I'm typing this. That should be illuminatory.
The [] is an indexer, it acts like a method on the class.
In this case, Session is null and you cannot perform the indexing on it.
Do this:
if(Session != null && Session["value"] != null)
{
// code
}
The session only really exists during the processing of an action - I wouldn't expect it to be valid in the constructor of a controller. For example, the controller might (for all I know) be re-used between requests.
You will need to do this either in the action (method), or (perhaps more appropriately) in an action filter, or the OnActionExecuting
(etc) method(s):
public abstract class ControllerBase : Controller
{
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
// code involving this.Session // edited to simplify
base.OnActionExecuting(filterContext); // re-added in edit
}
}
You're getting this error because the "Session" object is null. Therefore it's impossible to look at the ["value"] bit of it. I'm not familiar with MVC, but either there's a bigger problem whereby the Session object isn't being created, or you're accessing it at the wrong point of the lifecycle, or you just need a test to check if Session != null.
You'll have to do it like this-
if(null != HttpContext.Current.Session["Value"])
{
//Code here.
}
if(Session != null && Session["name"] != null && Session["name"].ToString()!="")
{
//fire code
}