### 设计一个访问计数器

访问计数器主要是用来记录应用程序曾经被访问次数的组件。用户可以通过 Application 对象和 Session 对象实现这一功能。下面就通过一个示例介绍一下。

下面示例主要 Global.asax 文件中对访问人数进行统计，并在 Default.aspx 文件中将统计结果显示出来。执行程序，示例运行结果如图 1 所示。

图 1 访问计数器

程序实现的主要步骤：

（1）新建一个网站，添加一个全局应用程序类（即 Global.asax 文件）。在该文件的 Application_Start 事件中将在访问数初始化为 0，代码如下：

void Application_Start(object sender, EventArgs e)

{

// 在应用程序启动时运行的代码

Application["count"] = 0;

}

当有新的用户访问网站时，将建立一个新的Session对象,并在Session对象的 Session_Start 事件中对 Application 对象加锁，以防止因为多个用户同时访问页面造成并行，同时将访问人数加 1；当用户退出该网站时，将关闭该用户的 Session 对象，同理对 Application 对象加锁，然后将访问人数减 1。代码如下：

void Session_Start(object sender, EventArgs e)

{

// 在新会话启动时运行的代码

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();

}

（2）对 Global.asax 文件进行设置后，需要将访问人数在网站的默认主页 Default.aspx 中显示出来。在 Default.aspx 页面上添加了一个 Label 控件，用于显示访问人数。代码如下：

protected void Page_Load(object sender, EventArgs e)

{

Label1.Text = "您是该网站的第" + Application["count"].ToString() + "个访问者";

}