在线人数统计

freexiaoyu 2009-05-29 10:45:04
asp.net session 在 mode="StateServer" 怎么实现在线统计。
因为这个模式不执行Session_End事件
...全文
866 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
烟波蓝222 2010-07-29
  • 打赏
  • 举报
回复
学习了!
pdsnet 2010-04-07
  • 打赏
  • 举报
回复
挖坟....
觉v醒 2010-03-02
  • 打赏
  • 举报
回复
mark。。。。。。。。。。。。。
zjybushiren88888 2009-06-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 HDNGO 的回复:]
C# codeDataTable dt = (DataTable)System.Web.HttpContext.Current.Application["DataTalbeOnline"];
[/Quote]
FanG081020 2009-06-01
  • 打赏
  • 举报
回复
换个session mode看看,楼主好像不是用传统方法啊
freexiaoyu 2009-06-01
  • 打赏
  • 举报
回复
人数只加不减。所以统计出来的也就不准确了
freexiaoyu 2009-06-01
  • 打赏
  • 举报
回复
我的就是用的这个,可是
我的session mode="StateServer" 是不执行Session_End(object sender, EventArgs e)
事件
freexiaoyu 2009-06-01
  • 打赏
  • 举报
回复
我的就是用的这个,可是
我的session model="StateServer" 是不执行Session_End(object sender, EventArgs e)
事件
ws_hgo 2009-06-01
  • 打赏
  • 举报
回复
调用页面

当前线人<span class="STYLE5"><%=Application["YZTonline"]%></span>人
ws_hgo 2009-06-01
  • 打赏
  • 举报
回复
先定义一个global.asax
<%@ Application Language="C#" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["YZTonline"] = 0;
}

void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码

}

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码

}

void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Session.Timeout = 5; //设置Session的有效时间,可根据需要修改

Application.Lock();
Application["YZTonline"] = Convert.ToInt32(Application["YZTonline"]) + 1;
Application.UnLock();

}

void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["YZTonline"] = Convert.ToInt32(Application["YZTonline"]) - 1;
Application.UnLock();


}

</script>
zangshulai 2009-06-01
  • 打赏
  • 举报
回复
up
freexiaoyu 2009-06-01
  • 打赏
  • 举报
回复
有人会吗?
sayoath 2009-06-01
  • 打赏
  • 举报
回复
当用户 关闭页面之后 执行SESSION.ABANDON()

就会强制调用 Session_End()
阿彪兄 2009-06-01
  • 打赏
  • 举报
回复
试试Global文件
bl_song 2009-06-01
  • 打赏
  • 举报
回复
这个不错,统计的更准确一些。
[Quote=引用 20 楼 ws_hgo 的回复:]
先定义一个global.asax

C# code<%@ Application Language="C#" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["YZTonline"] = 0;
}

void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码

}

void Application_Error…
[/Quote]
bl_song 2009-06-01
  • 打赏
  • 举报
回复
这个不错,统计的更准确一些。
[Quote=引用 20 楼 ws_hgo 的回复:]
先定义一个global.asax

C# code<%@ Application Language="C#" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["YZTonline"] = 0;
}

void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码

}

void Application_Error…
[/Quote]
「已注销」 2009-06-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 HDNGO 的回复:]
//不知道Rows.Count是否随循环减少,如果是效率就大于foreach且这里不能使用foreach
for (int i = 0; i < dtOnline.Rows.Count; i++)
{
DataRow drDel = dtOnline.Rows[i];
TimeSpan ts = DateTime.Now - Convert.ToDateTime(drDel["LastActiveTime"]);
if (ts.Minutes > OFFLINEDIFF)
{
dtOnline.Rows.Remove(drDel);
}
}
[/Quote]
Rows.Count会随循环减小的!
freexiaoyu 2009-06-01
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 HDNGO 的回复:]
引用 36 楼 freexiaoyu 的回复:
引用 33 楼 HDNGO 的回复:
显示人数的页面:

C# code
(new OnLine()).CheckOnline();
DataTable dt = (DataTable)Application["OnlineTalbe"];
Label1.Text="总共"+(dt.Rows.Count).ToString()+"人在线";

你这个是统计登陆用户的吧,我这里统计在线人数,登陆和不登陆都统计


神奇。。。没登陆的你写匿名不就好了。。。
[/Quote]

(new OnLine()).CheckOnline(); 这里面的参数是什么。
public void CheckOnline(string UserId, string UserName)
xiaomao222 2009-06-01
  • 打赏
  • 举报
回复
mark
HDNGO 2009-06-01
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 freexiaoyu 的回复:]
引用 33 楼 HDNGO 的回复:
显示人数的页面:

C# code
(new OnLine()).CheckOnline();
DataTable dt = (DataTable)Application["OnlineTalbe"];
Label1.Text="总共"+(dt.Rows.Count).ToString()+"人在线";

你这个是统计登陆用户的吧,我这里统计在线人数,登陆和不登陆都统计
[/Quote]

神奇。。。没登陆的你写匿名不就好了。。。

加载更多回复(27)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧