.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Session["username"] = "test";
}
this.Label1.Text = Application["counter"].ToString();
this.Label2.Text = Application["online"].ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("ViewStateTest.aspx?id=2");
}
protected void Button2_Click(object sender, EventArgs e)
{//关闭窗口
Session.RemoveAll();
Session.Abandon();
ClientScript.RegisterStartupScript(this.GetType(), "", "<script>window.close();</script>");
}
Global:
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["counter"] = 0;
Application["online"] = 0;
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_BeginRequest(object sender, EventArgs e)
{
Response.Write("请求开始");
}
void Application_EndRequest(object sender, EventArgs e)
{
Response.Write("请求结束");
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码 数据库锁
Application.Lock();
Application["counter"] = (int)Application["counter"] + 1;
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["online"] = (int)Application["online"]-1;//网页访问量只递增不减,
//而当前在线人数为窗体关闭时就减-1,只此区别
Application.UnLock();
}
</script>