.net 4中今天和昨天的Asp.net访问者计数(在线用户)
本文关键字:net 在线 用户 访问者 Asp 今天 昨天 | 更新日期: 2023-09-27 18:04:51
我为我的应用程序编写了以下访问者计数(在线用户)代码:
参考:
http://aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for-ASP-NET-website.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using CardCharge.Classes;
namespace CardCharge
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
Application["OnlineUsers"] = 0;
}
protected void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1;
Application.UnLock();
}
protected void Application_BeginRequest(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)
{
Application.Lock();
Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1;
Application.UnLock();
}
protected void Application_End(object sender, EventArgs e)
{
}
}
}
也我发现下面的链接使用IHttpModule:
http://blog.sb2.fr/post/2008/12/01/HowTo-Get-Current-Online-Users-Count-and-Infos-with-ASPNET.aspx
我更喜欢使用简单的全局。这是我的目的,但这两种方法太老了(3年前)
在。net 4中是否有更好的方法来获得在线用户(访问者计数)?
也为获得一些计数(如昨天),我需要数据库!
但它是可以连接sql server 2008在session_start或,特别是 session_end在全局asax ?
thanks in advance
我见过的"标准"方法是在global.asax中使用Session_Start和Session_End。ASP.net 4没有更改此功能。这种方法的唯一限制是,直到会话结束,服务器仍然认为用户已经登录,直到会话超时配置中指定的分钟数过去,会话才会结束。
有关会话超时的更多信息,请参阅此页:http://forums.asp.net/t/1283350.aspx
一种更健壮、更新但更困难的方法是使用轮询来确保客户端始终连接到服务器。关于这个主题的概述,请参阅维基百科的这篇文章:http://en.wikipedia.org/wiki/Comet_(编程)