Rahul Rahul - 1 month ago 13
C# Question

How to use Session Variable in MVC

I have declared Session variable in "Global.asax" file as,

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
int temp=4;
HttpContext.Current.Session.Add("_SessionCompany",temp);
}


And want to use this Session Variable into My Controller's action as,

public ActionResult Index()
{
var test = this.Session["_SessionCompany"];
return View();
}


But I am Getting Exception While accessing the Session Variable.
Please help me on this that How can I access the Session Variable into my controller's Action.

I am getting an Exception like
"Object Reference not set to an Insatance of an object"

in
Application_Start
in Global.asax on line

HttpContext.Current.Session.Add("_SessionCompany",temp);

Answer

The thread that starts the Application is not the request thread used when the user makes a request to the web page.

That means when you set in the Application_Start, you're not setting it for any user.

You want to set the session on Session_Start event.

Edit:

Add a new event to your global.asax.cs file called Session_Start and remove the session related stuff from Application_Start

protected void Session_Start(Object sender, EventArgs e) 
{
   int temp = 4;
   HttpContext.Current.Session.Add("_SessionCompany",temp);
}

This should fix your issue.