PDA

View Full Version : مدیرت Session



fakhravari
یک شنبه 29 بهمن 1391, 16:22 عصر
با سلام
چنتا تابع نوشتم که با همکاری دوستان بتونیم سشن ها را مدیریت کنیم.
ساخت یک جدول
private static DataTable Management_DataTable()
{
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("SessionID", typeof(string));
dt.Columns.Add("UserID", typeof(string));
dt.AcceptChanges();
System.Web.HttpContext.Current.Cache["SesionList"] = dt;
return dt;
}
لیستی از سشن ها به ورت جدول
public static DataTable Management_SesionList()
{
try
{
if (((System.Data.DataTable)System.Web.HttpContext.Cu rrent.Cache["SesionList"]).Rows.Count == 0)
{
return Management_DataTable();
}
else
{
return (System.Data.DataTable)System.Web.HttpContext.Curr ent.Cache["SesionList"];
}
}
catch
{
return Management_DataTable();
}
}
تابع ورود سشن
public static DataTable Management_SessionAdd(string SessionID)
{
if (Management_SesionList().Rows.Count == 0)
Management_SesionList();


System.Data.DataTable dt = (System.Data.DataTable)System.Web.HttpContext.Curr ent.Cache["SesionList"];

for (int i = 0; i < dt.Rows.Count; i++)
{
if (System.Web.HttpContext.Current.Session.SessionID. ToString() == dt.Rows[i]["SessionID"].ToString())
{
return dt;
}
}

DataRow dr = dt.NewRow();
dr["SessionID"] = SessionID;
dr["UserID"] = "Null";
dt.Rows.Add(dr);
dt.AcceptChanges();

System.Web.HttpContext.Current.Cache["SesionList"] = dt;
return dt;
}
تابع سشن - یوزر
public static DataTable Management_SessionUserAdd(string UserID)
{
if (Management_SesionList().Rows.Count == 0)
Management_SesionList();

System.Data.DataTable dt = (System.Data.DataTable)System.Web.HttpContext.Curr ent.Cache["SesionList"];

for (int i = 0; i < dt.Rows.Count; i++)
{
if (System.Web.HttpContext.Current.Session.SessionID. ToString() == dt.Rows[i]["SessionID"].ToString())
{
dt.Rows[i]["SessionID"] = System.Web.HttpContext.Current.Session.SessionID.T oString();
dt.Rows[i]["UserID"] = UserID;

dt.AcceptChanges();
break;
}
}

System.Web.HttpContext.Current.Cache["SesionList"] = dt;
return dt;
}
تابع حذف سشن
public static void Management_SessionUserDelete(string UserID)
{
System.Data.DataTable dt = (System.Data.DataTable)System.Web.HttpContext.Curr ent.Cache["SesionList"];

for (int i = 0; i < dt.Rows.Count; i++)
{
if (UserID == dt.Rows[i]["UserID"].ToString())
{
System.Web.HttpContext.Current.Session.Remove(dt.R ows[i]["SessionID"].ToString());
dt.Rows[i].Delete();
break;
}
}

dt.AcceptChanges();
System.Web.HttpContext.Current.Cache["SesionList"] = dt;
}

ایا این کار شدنی و اصولی؟