public
class
SessionCache
{
Get New Cache Table#region Get New Cache Table
public static DataTable CreateCacheTable()
{
DataTable table = new DataTable("SessionCache");
DataColumn column;
column = new DataColumn();
column.ColumnName = "SessionId";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "UserCode";
column.DataType = System.Type.GetType("System.Int32");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "LoginName";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "HostAddress";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "PlatForm";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "BrowserType";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "StartTime";
column.DataType = System.Type.GetType("System.DateTime");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "LoginTime";
column.DataType = System.Type.GetType("System.DateTime");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "EndTime";
column.DataType = System.Type.GetType("System.DateTime");
table.Columns.Add(column);
return table;
}
#endregion
public static void SessionStart(DataTable table, string strSessionId, string strHostAddress, string strPlatForm, string strBrowserType, DateTime dtNow)
{
DataRow row = table.NewRow();
DateTime now = DateTime.Now;
row["SessionId"] = strSessionId;
row["HostAddress"] = strHostAddress;
row["PlatForm"] = strPlatForm;
row["BrowserType"] = strBrowserType;
row["StartTime"] = dtNow;
table.Rows.Add(row);
}
public static void SessionEnd(DataTable table, string strSessionId, DateTime dtNow)
{
DataRow[] rows = table.Select(string.Format("SessionId = '{0}'", strSessionId));
if( rows.Length == 0 )
return;
rows[0]["EndTime"] = dtNow;
string connString = ConfigurationSettings.AppSettings["ConnString"];
using( SqlConnection conn = new SqlConnection(connString) )
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
if( rows[0]["UserCode"] != DBNull.Value )
{
cmd.CommandText = "INSERT INTO SessionLog(SessionId, UserCode, HostAddress, PlatForm, BrowserType, StartTime, LoginTime, EndTime) VALUES(@SessionId, @UserCode, @HostAddress, @PlatForm, @BrowserType, @StartTime, @LoginTime, @EndTime)";
cmd.Parameters.Add("@UserCode", Convert.ToInt32(rows[0]["UserCode"].ToString()));
cmd.Parameters.Add("@LoginTime", Convert.ToDateTime(rows[0]["LoginTime"].ToString()));
}
else
{
cmd.CommandText = "INSERT INTO SessionLog(SessionId, HostAddress, PlatForm, BrowserType, StartTime, EndTime) VALUES(@SessionId, @HostAddress, @PlatForm, @BrowserType, @StartTime, @EndTime)";
}
cmd.Parameters.Add("@SessionId", rows[0]["SessionId"].ToString());
cmd.Parameters.Add("@HostAddress", rows[0]["HostAddress"].ToString());
cmd.Parameters.Add("@PlatForm", rows[0]["PlatForm"].ToString());
cmd.Parameters.Add("@BrowserType", rows[0]["BrowserType"].ToString());
cmd.Parameters.Add("@StartTime", Convert.ToDateTime(rows[0]["StartTime"].ToString()));
cmd.Parameters.Add("@EndTime", Convert.ToDateTime(rows[0]["EndTime"].ToString()));
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
table.Rows.Remove(rows[0]);
}
public static void UserLogin(DataTable table,string strSessionId, int intUserCode, string strUserName, DateTime dtNow)
{
DataRow[] rows = table.Select(string.Format("SessionId = '{0}'", strSessionId));
if( rows.Length == 0 )
return;
rows[0]["UserCode"] = intUserCode;
rows[0]["LoginName"] = strUserName;
rows[0]["LoginTime"] = dtNow;
}
}
{
Get New Cache Table#region Get New Cache Table
public static DataTable CreateCacheTable()
{
DataTable table = new DataTable("SessionCache");
DataColumn column;
column = new DataColumn();
column.ColumnName = "SessionId";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "UserCode";
column.DataType = System.Type.GetType("System.Int32");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "LoginName";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "HostAddress";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "PlatForm";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "BrowserType";
column.DataType = System.Type.GetType("System.String");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "StartTime";
column.DataType = System.Type.GetType("System.DateTime");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "LoginTime";
column.DataType = System.Type.GetType("System.DateTime");
table.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "EndTime";
column.DataType = System.Type.GetType("System.DateTime");
table.Columns.Add(column);
return table;
}
#endregion
public static void SessionStart(DataTable table, string strSessionId, string strHostAddress, string strPlatForm, string strBrowserType, DateTime dtNow)
{
DataRow row = table.NewRow();
DateTime now = DateTime.Now;
row["SessionId"] = strSessionId;
row["HostAddress"] = strHostAddress;
row["PlatForm"] = strPlatForm;
row["BrowserType"] = strBrowserType;
row["StartTime"] = dtNow;
table.Rows.Add(row);
}
public static void SessionEnd(DataTable table, string strSessionId, DateTime dtNow)
{
DataRow[] rows = table.Select(string.Format("SessionId = '{0}'", strSessionId));
if( rows.Length == 0 )
return;
rows[0]["EndTime"] = dtNow;
string connString = ConfigurationSettings.AppSettings["ConnString"];
using( SqlConnection conn = new SqlConnection(connString) )
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
if( rows[0]["UserCode"] != DBNull.Value )
{
cmd.CommandText = "INSERT INTO SessionLog(SessionId, UserCode, HostAddress, PlatForm, BrowserType, StartTime, LoginTime, EndTime) VALUES(@SessionId, @UserCode, @HostAddress, @PlatForm, @BrowserType, @StartTime, @LoginTime, @EndTime)";
cmd.Parameters.Add("@UserCode", Convert.ToInt32(rows[0]["UserCode"].ToString()));
cmd.Parameters.Add("@LoginTime", Convert.ToDateTime(rows[0]["LoginTime"].ToString()));
}
else
{
cmd.CommandText = "INSERT INTO SessionLog(SessionId, HostAddress, PlatForm, BrowserType, StartTime, EndTime) VALUES(@SessionId, @HostAddress, @PlatForm, @BrowserType, @StartTime, @EndTime)";
}
cmd.Parameters.Add("@SessionId", rows[0]["SessionId"].ToString());
cmd.Parameters.Add("@HostAddress", rows[0]["HostAddress"].ToString());
cmd.Parameters.Add("@PlatForm", rows[0]["PlatForm"].ToString());
cmd.Parameters.Add("@BrowserType", rows[0]["BrowserType"].ToString());
cmd.Parameters.Add("@StartTime", Convert.ToDateTime(rows[0]["StartTime"].ToString()));
cmd.Parameters.Add("@EndTime", Convert.ToDateTime(rows[0]["EndTime"].ToString()));
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
table.Rows.Remove(rows[0]);
}
public static void UserLogin(DataTable table,string strSessionId, int intUserCode, string strUserName, DateTime dtNow)
{
DataRow[] rows = table.Select(string.Format("SessionId = '{0}'", strSessionId));
if( rows.Length == 0 )
return;
rows[0]["UserCode"] = intUserCode;
rows[0]["LoginName"] = strUserName;
rows[0]["LoginTime"] = dtNow;
}
}
public
class
Global : System.Web.HttpApplication
{
/**//// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
public static string ErrorMessage = "NULL";
public Global()
{
InitializeComponent();
}
protected void Application_Start(Object sender, EventArgs e)
{
try
{
Application["SessionCount"] = 0;
Application["SessionCache"] = SessionCache.CreateCacheTable();
}
catch(Exception ex)
{
Global.ErrorMessage = ex.Message + "<br>" + ex.Source + "<br>" + ex.StackTrace;
}
}
protected void Session_Start(Object sender, EventArgs e)
{
try
{
Application.Lock();
Application["SessionCount"] = (int)Application["SessionCount"] + 1;
SessionCache.SessionStart(
(System.Data.DataTable)Application["SessionCache"],
Session.SessionID,
Request.UserHostAddress,
Request.Browser.Platform,
Request.Browser.Type,
DateTime.Now
);
Application.UnLock();
}
catch(Exception ex)
{
Global.ErrorMessage = ex.Message + "<br>" + ex.Source + "<br>" + ex.StackTrace;
}
}
protected void Application_BeginRequest(Object sender, EventArgs e)
{
}
protected void Application_EndRequest(Object sender, EventArgs e)
{
}
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
}
protected void Application_Error(Object sender, EventArgs e)
{
}
protected void Session_End(Object sender, EventArgs e)
{
try
{
Application.Lock();
Application["SessionCount"] = (int)Application["SessionCount"] - 1;
SessionCache.SessionEnd(
(System.Data.DataTable)Application["SessionCache"],
Session.SessionID,
DateTime.Now
);
Application.UnLock();
}
catch(Exception ex)
{
Global.ErrorMessage = ex.Message + "<br>" + ex.Source + "<br>" + ex.StackTrace;
}
}
protected void Application_End(Object sender, EventArgs e)
{
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
}
#endregion
}
{
/**//// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
public static string ErrorMessage = "NULL";
public Global()
{
InitializeComponent();
}
protected void Application_Start(Object sender, EventArgs e)
{
try
{
Application["SessionCount"] = 0;
Application["SessionCache"] = SessionCache.CreateCacheTable();
}
catch(Exception ex)
{
Global.ErrorMessage = ex.Message + "<br>" + ex.Source + "<br>" + ex.StackTrace;
}
}
protected void Session_Start(Object sender, EventArgs e)
{
try
{
Application.Lock();
Application["SessionCount"] = (int)Application["SessionCount"] + 1;
SessionCache.SessionStart(
(System.Data.DataTable)Application["SessionCache"],
Session.SessionID,
Request.UserHostAddress,
Request.Browser.Platform,
Request.Browser.Type,
DateTime.Now
);
Application.UnLock();
}
catch(Exception ex)
{
Global.ErrorMessage = ex.Message + "<br>" + ex.Source + "<br>" + ex.StackTrace;
}
}
protected void Application_BeginRequest(Object sender, EventArgs e)
{
}
protected void Application_EndRequest(Object sender, EventArgs e)
{
}
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
}
protected void Application_Error(Object sender, EventArgs e)
{
}
protected void Session_End(Object sender, EventArgs e)
{
try
{
Application.Lock();
Application["SessionCount"] = (int)Application["SessionCount"] - 1;
SessionCache.SessionEnd(
(System.Data.DataTable)Application["SessionCache"],
Session.SessionID,
DateTime.Now
);
Application.UnLock();
}
catch(Exception ex)
{
Global.ErrorMessage = ex.Message + "<br>" + ex.Source + "<br>" + ex.StackTrace;
}
}
protected void Application_End(Object sender, EventArgs e)
{
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
}
#endregion
}