There is an inbuilt support for getting user status in NET 2.0 using Memebership Namespace.
You can get the list of online users by looping through the MembershipUserCollection returned by Memeberhisp.GetAllUsers() method and checking the IsOnline property:
MembershipUserCollection muc = Membership.GetAllUsers(); foreach (MembershipUser mu in muc) { if (mu.IsOnline) { Response.Write(mu.UserName); } }
There is an alternate method to create a customized method to get more details. You can add a property in the Global.asax.vb/Global.asax.cs which returns a DataTable that holds the users’ information. Add this information a user logs on and remove as the user logs off:
Imports System.Data Public Class Global Inherits System.Web.HttpApplication Private Shared _table As DataTable Public Shared ReadOnly Property Users() As DataTable Get If _table Is Nothing Then _table = New DataTable("Users") With _table.Columns .Add("UserID",GetType(Integer)) .Add("Logon",GetType(DateTime)) .Add("Active",GetType(Boolean)) .Item(0).AllowDBNull = False .Item(1).AllowDBNull = False .Item(2).AllowDBNull = False _table.PrimaryKey = New DataColumn() { .Item(0) } End With End If Return _table End Get End Property End Class
Now you can add the data table or remove the entries after log on and log off:
' When User Logs In Dim userRow As DataRow = Global.Users.Rows.Find() If userRow Is Nothing Then userRow = Global.Users.NewRow() userRow("UserID") = End If userRow("Logon") = Now userRow("Active") = True If userRow.RowState = DataRowState.Detached Then Global.Users.Rows.Add(userRow) End If Global.Users.AcceptChanges() 'When User Logs Off Dim userRow As DataRow = Global.Users.Rows.Find( ) If Not userRow Is Nothing Then Global.Users.Remove(userRow) End If