Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get session ID in ASP.Net

Tags:

asp.net

People also ask

How can controller get the session ID?

The Controller consists of the following two Action methods. Inside this Action method, simply the View is returned. When the Get SessionId Button is clicked, SetSession Action method is executed which saves the value to the Session using the SetString method. Then the Session ID is retrieved from HttpContext.

What is ASP.NET session ID cookie?

With ASP.NET you can have your session data stored in memory or in a database (e.g. SQL Server). When you first use session in your application it will return a session cookie to the client. All future requests from the client will also pass along the session cookie (which includes an id such as the one you included).

What is session in asp net core?

Session state. Session state is an ASP.NET Core scenario for storage of user data while the user browses a web app. Session state uses a store maintained by the app to persist data across requests from a client. The session data is backed by a cache and considered ephemeral data.


To get the session id, do this:

// In a user control or page
string sessionId = this.Session.SessionID; 

// In a normal class, running in a asp.net app.
string sessionId = System.Web.HttpContext.Current.Session.SessionID; 

You should not need to:

  • Make any data table or loop anything
  • Use SQL server for session state
  • Handle Session_Start or Session_End

In a cookieless scenario, the session id is created when you access the Session object for the first time. This shouldn't matter much, because the moment you access the SessionID property, the session object is accessed.

For more info, look into this:

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

Note: The msdn examples have been written by monkeys.


You can use Global.asax file and set the Session at Session_Start event. See below

in Global.asax file you can do something like this:

protected void Session_Start(object sender, EventArgs e)
{
    Session["sid"] = Session.SessionID;
    Session["sid"] = "Test";
} 

Then in your WebForm you can get the Session ID and Value like below

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Session ID is:" + Session.SessionID.ToString()+ "<br/>");
    Response.Write("Session value is:" + Session["sid"].ToString());
} 

For details, see http://www.dotnetcurry.com/ShowArticle.aspx?ID=126


According to Dino Esposito each session is stored in the application's Cache and with some work you can retreive this information:

DataTable dt = new DataTable();
dt.Columns.Add("SessionID", typeof(string));
foreach(DictionaryEntry elem in Cache) {
    string s = elem.Key.ToString();
    if (s.StartsWith("System.Web.SessionState.SessionStateItem")) {
        DataRow row = dt.NewRow();
        char[] parms = {':'};
        string[] a = s.Split(parms);
        row["SessionID"] = a[1];
        dt.Rows.Add(row);
    }
}

If you want a way to store a list of the current sessions where you control the backing store, so that you may store extra data about the client, you can use a list. (I'm writing the following example from the top of my head)

Hook into Application_SessionStart in the global.asax.cs file:

static List<string> sessions = new List<string>();
static object sessionLock = new object();

void Application_SessionStart()
{
    lock (sessionLock) {
        sessions.Add(Session.SessionID);
    }
}

void Application_SessionEnd()
{
    lock (sessionLock) {
        sessions.Remove(Session.SessionID);
    }
}

Alternatively, you can use a dictionary, storing the session ID as a key, and extra data about that user as the value. Then you can easily create a page that shows all current user sessions, for example, for an admin site to show current user sessions.

SessionEnd will only be called if your sessions are InProc.