日期:2014-05-18  浏览次数:20418 次

统计在线人数
做了一个统计在线人数的,刚开始好用的,后来不知哪里改了又不行了,代码如下:
  void Application_Start(object sender, EventArgs e) 
  {
  //在应用程序启动时运行的代码
  //总访问量

  string path = Server.MapPath("") + "/aspnet_client/login.txt";
  if (!System.IO.File.Exists(path))
  {
  System.IO.StreamWriter sw = System.IO.File.CreateText(path);
  sw.WriteLine("0");
  sw.Close();
  }
  System.IO.StreamReader sr = System.IO.File.OpenText(path);
  string str = sr.ReadToEnd();
  long cou = Int32.Parse(str);
  Application["count"] = cou;
  sr.Close();
   
  //当前在线
  Application.Lock();
   
  if (Application["online"] == null)
  {
  Application["online"] = 1;
  }
  Application.UnLock();

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

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

  }

  void Session_Start(object sender, EventArgs e) 
  {
  //在新会话启动时运行的代码
  Application.Lock();
  //总访问量
  Application["count"] = (long)Application["count"] + 1;
  long cou = (long)Application["count"];
  string path = Server.MapPath("") + "/aspnet_client/login.txt";
  System.IO.StreamWriter sw = new System.IO.StreamWriter(path, false);
  sw.WriteLine(cou);
  sw.Close();
  //当前
  if (Application["online"]!= null)
  {
  int count = Int32.Parse(Application["online"].ToString());
  Application["online"] =count + 1;
  }
  else
  {
  Application["online"] = 1;
  }
  Application.UnLock();
  }

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

  }
  else
  {
  Application["online"] = 0;
  }
  Application.UnLock();
  }

哪位帮我看下,哪里错了?

------解决方案--------------------
可能是Session_End没有触发
只有在web.config文件中的sessionstate模式设置为InProc时,才会引发 Session_End事件
------解决方案--------------------
http://http://www.cnblogs.com/jhxk/articles/1773067.html

你可以看看这个 对比一下