在线统计人数!!

boyixiaozi 2008-09-09 01:26:14
在线人数统计?
有没有人有更好的办法,能够准确点统计!基于。NET的
...全文
172 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoo0 2008-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 juedaihuaihuai 的回复:]
application
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 greatverve 的回复:]
学习一下.
[/Quote]
greatverve 2008-09-09
  • 打赏
  • 举报
回复
学习一下.
leon28 2008-09-09
  • 打赏
  • 举报
回复
首先建立一个文本文件counter.txt,打开文件输入一个大于0的整数作为访问记录的初始值。

面我们就可以正式的编写计数器的程序了。

listing 1是webform1.aspx,主要是用于显示从文件中读出的访问次数的记录。由于在整个应用程序生命周期中,Application 对象都是有效的,所以在不同的页面中都可以对它进行存取,就像使用全局变量一样方便。

在代码中,使用<%=Application["counter"]%>来表示访问次数记录。

程序代码如下:

listing1 -----webform1.aspx-----

<%@ Page language="c#" Src="WebForm1.aspx.cs" Inherits="counter1.WebForm1" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">

<meta name="CODE_LANGUAGE" Content="C#">

</HEAD>

<body>

<form id="Form1" method="post" runat="server">

<FONT face="宋体">您是第<%=Application["counter"]%>位访问者!</FONT>

</form>

</body>

</HTML>

Listing 2和listing3是global.asax和global.asax.cs文件代码,当执行webform1.aspx文件之前会执行它们。在global.asax.cs文件中,定义了一些事件和其响应代码,主要是用于读写文件和数值累加。

Listing 2 -----global.asax----

<%@ Application Src="Global.asax.cs" Inherits="counter2.Global" %>

listing 3 -----global.asax.cs-----

using System;

using System.Collections;

using System.ComponentModel;

using System.Web;

using System.Web.SessionState;

using System.IO ;

namespace counter2

{

public class Global : System.Web.HttpApplication

{

protected void Application_Start(Object sender, EventArgs e)

{

uint count=0;

StreamReader srd;

//取得文件的实际路径

string file_path=Server.MapPath ("counter.txt");

//打开文件进行读取

srd=File.OpenText (file_path);

while(srd.Peek ()!=-1)

{

string str=srd.ReadLine ();

count=UInt32.Parse (str);

}

object obj=count;

Application["counter"]=obj;

srd.Close ();

}



protected void Session_Start(Object sender, EventArgs e)

{

Application.Lock ();

//数值累加,注意这里使用了装箱(boxing)

uint jishu=0;

jishu=(uint)Application["counter"];

jishu=jishu+1;

object obj=jishu;

Application["counter"]=obj;

//将数据记录写入文件

string file_path=Server.MapPath ("counter.txt");

StreamWriter fs=new StreamWriter(file_path,false);

fs.WriteLine (jishu);

fs.Close ();

Application.UnLock ();

}

protected void Application_BeginRequest(Object sender, EventArgs e)

{

}

protected void Application_EndRequest(Object sender, EventArgs e)

{

}

protected void Session_End(Object sender, EventArgs e)

{

}

protected void Application_End(Object sender, EventArgs e)

{

//装箱

uint js=0;

js=(uint)Application["counter"];

//object obj=js;

//Application["counter"]=js;

//将数据记录写入文件

string file_path=Server.MapPath ("counter.txt");

StreamWriter fs=new StreamWriter(file_path,false);

fs.WriteLine(js);

fs.Close ();

}

}

}

bijiniye1988 2008-09-09
  • 打赏
  • 举报
回复
更好的?

我提供个常用的吧

在Global.asax文件下,


void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
}

void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为

// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。


}


这个Global.asax文件默认没有的,需要手动添加一下才可以
绝代坏坏 2008-09-09
  • 打赏
  • 举报
回复
application

62,025

社区成员

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

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

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

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