写了个缓存 Session 的类
来源:互联网 发布:scrivener mac 中文 编辑:程序博客网 时间:2024/06/11 23:18
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
}
http://weboy.cnblogs.com/archive/2006/06/06/418668.html
- 写了个缓存 Session 的类
- 写了个NSObject的扩展类
- 仿spring中hibernateCallback写了个对session的封装
- 写了个位图缓存优化渲染方案
- 写了个加密解密Url的类
- [分享]写了个C#的排列组合类
- 写了个DOM4J 的工具类。欢迎拍砖
- 写了个简单的内联API钩子类
- 没用Hibernate 练手型的写了个DBUtil类
- 写了个PUP的OPC
- 写了个监控网络流量的脚本
- 无聊写了个看电影的程序,
- 写了个自己的bigint
- 写了个表达式求值的算法
- 写了个atof的函数
- 写了个生成UID的算法
- 写了个挺好玩的程序
- 写了个MongoDB的CURD
- ASP.NET中如何防范SQL注入式攻击
- LordPE v1.4 by yoda
- ASP:Literal控件用法
- Tiny Hexer v1.7.1.2 by Markus Stephany
- 大家一起来跳青蛙--智力考验
- 写了个缓存 Session 的类
- Become An Xcoder by CocoaLab
- 对网页进行简繁字体转换的简单方法
- 用.NET开发MSN聊天机器人
- 互联网企业管理 IT业务主要呈现三大特点
- Detours v2.1 by Microsoft Research
- 异常对象的传递与复制构造函数
- Array和ArrayList的异同点
- showModalDialog和showModelessDialog使用心得