博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET基础之网站访问统计计数器

Posted on 2009-05-13 20:48  shanymen  阅读(2183)  评论(0编辑  收藏  举报

使用Global.asax全局变量可以避免刷新页面导致计数器刷新。

void Application_Start(object sender, EventArgs e)
   {
       //在应用程序启动时运行的代码,IIS重新启动时刷新计数器。
       Application["count"] = 0;
   }

void Session_Start(object sender, EventArgs e)
   {
       //在新会话启动时运行的代码,会话建立,计数器+1,防止错误先锁定后解锁。重复刷新页面不会更改计数器,只有建立新会话才可以。
       Application.Lock();
       Application["count"] = (int)Application["count"] + 1;
       Application.UnLock();
   }

void Session_End(object sender, EventArgs e)
   {
       //在会话结束时运行的代码。此处主要是用来统计在线人数,如只需要计数,可以不需要此处代码。 
       // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
       // InProc 时,才会引发 Session_End 事件。如果会话模式
       //设置为 StateServer 或 SQLServer,则不会引发该事件。
       Application.Lock();
       Application["count"] = (int)Application["count"] - 1;
       Application.UnLock();
   }

protected void Page_Load(object sender, EventArgs e)
    {

        //页面中直接使用Application["count"]。
        Response.Write("你是本网站第"+Application["count"]+"个访问者");
    }

注意:Application与Session的区别。前者为应用程序的变量,后者为会话的变量。则前者保持时间长,不得乱用。