查看在线人员代码时,如何取登录人员的session值
在登录的页面 我放个名称在session["name"]中
session["name"] ="陈小"
如何在下面的代码中取到这个值
(
看下面代码 d["用户类型"]= ; //在这里我想得到用记的session["name"] 的值 “陈小”
)
=============
//Global.asax.cs中
protected void Session_Start(Object sender, EventArgs e)
{
Business.Statistics.Online();
}
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (this.Request.Cookies["ASP.NET_SessionId"]!=null)
{
Business.Statistics.Online();
}
}
//关键类
public static void Online()
{
//在线名单
// IP 用户名 类型 正在访问
//SessionId
if (HttpContext.Current.Cache["online"]==null)
{
//不存在缓存
DataTable tb=new DataTable();
tb.Columns.Add("IP");
tb.Columns.Add("用户名");
tb.Columns.Add("用户类型");
tb.Columns.Add("正在访问");
tb.Columns.Add("来访时间");
tb.Columns.Add("上次活动时间");
tb.Columns.Add("SessionId");
HttpContext.Current.Cache.Insert("online",tb);
}
else
{
//存在缓存
DataTable dt=(DataTable)HttpContext.Current.Cache["online"];
string strSessionId=HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value;
//如果SessionId在缓存中存在,更新其当前所在页面
if (dt.Select("SessionId='"+strSessionId+"'").Length==1)
{
//选出该用户的行
DataRow d=dt.Select("SessionId='"+strSessionId+"'")[0];
d["正在访问"]=HttpContext.Current.Request.Url.ToString();
d["上次活动时间"]=System.DateTime.Now.ToString();
d["用户类型"]= ; //在这里我想得到用记的session["name"] 的值 “陈小”
int m=dt.Rows.Count;
for (int i=0;i<m;i++)
{
if (DateTime.Parse(dt.Rows[i]["上次活动时间"].ToString()).AddMinutes(5)<DateTime.Now)
{
dt.Rows.Remove(dt.Rows[i]);
m--;
}
}
}
//如果SessionId不存在,将其加入
else
{
DataRow dr=dt.NewRow();
dr[0]=HttpContext.Current.Request.UserHostAddress;
dr[1]="未登录";
dr[2]="未登录";
dr[3]=HttpContext.Current.Request.Url.ToString();
dr[4]=System.DateTime.Now.ToString();
dr[5]=System.DateTime.Now.ToString();
dr[6]=strSessionId;
dt.Rows.Add(dr);
}
//更新缓存
HttpContext.Current.Cache["online"]=dt;
}
}
//查看当前用户的页面
private void LoadData()
{
if (HttpContext.Current.Cache["online"]!=null)
{
dg.DataSource=(DataTable)HttpContext.Current.Cache["online"];
dg.DataBind();
}
else
{
Response.Write("没有缓存");
}
}
在登录的页面 我放个名称在session["name"]中
session["name"] ="陈小"
如何在下面的代码中取到这个值
(
看下面代码 d["用户类型"]= ; //在这里我想得到用记的session["name"] 的值 “陈小”
)
=============
//Global.asax.cs中
protected void Session_Start(Object sender, EventArgs e)
{
Business.Statistics.Online();
}
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (this.Request.Cookies["ASP.NET_SessionId"]!=null)
{
Business.Statistics.Online();
}
}
//关键类
public static void Online()
{
//在线名单
// IP 用户名 类型 正在访问
//SessionId
if (HttpContext.Current.Cache["online"]==null)
{
//不存在缓存
DataTable tb=new DataTable();
tb.Columns.Add("IP");
tb.Columns.Add("用户名");
tb.Columns.Add("用户类型");
tb.Columns.Add("正在访问");
tb.Columns.Add("来访时间");
tb.Columns.Add("上次活动时间");
tb.Columns.Add("SessionId");
HttpContext.Current.Cache.Insert("online",tb);
}
else
{
//存在缓存
DataTable dt=(DataTable)HttpContext.Current.Cache["online"];
string strSessionId=HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value;
//如果SessionId在缓存中存在,更新其当前所在页面
if (dt.Select("SessionId='"+strSessionId+"'").Length==1)
{
//选出该用户的行
DataRow d=dt.Select("SessionId='"+strSessionId+"'")[0];
d["正在访问"]=HttpContext.Current.Request.Url.ToString();
d["上次活动时间"]=System.DateTime.Now.ToString();
d["用户类型"]= ; //在这里我想得到用记的session["name"] 的值 “陈小”
int m=dt.Rows.Count;
for (int i=0;i<m;i++)
{
if (DateTime.Parse(dt.Rows[i]["上次活动时间"].ToString()).AddMinutes(5)<DateTime.Now)
{
dt.Rows.Remove(dt.Rows[i]);
m--;
}
}
}
//如果SessionId不存在,将其加入
else
{
DataRow dr=dt.NewRow();
dr[0]=HttpContext.Current.Request.UserHostAddress;
dr[1]="未登录";
dr[2]="未登录";
dr[3]=HttpContext.Current.Request.Url.ToString();
dr[4]=System.DateTime.Now.ToString();
dr[5]=System.DateTime.Now.ToString();
dr[6]=strSessionId;
dt.Rows.Add(dr);
}
//更新缓存
HttpContext.Current.Cache["online"]=dt;
}
}
//查看当前用户的页面
private void LoadData()
{
if (HttpContext.Current.Cache["online"]!=null)
{
dg.DataSource=(DataTable)HttpContext.Current.Cache["online"];
dg.DataBind();
}
else
{
Response.Write("没有缓存");
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货