使用Global.asax全局變量可以避免刷新頁(yè)面導致計數器刷新。
void Application_Start(object sender, EventArgs e)
{
//在應用程序啟動(dòng)時(shí)運行的代碼,IIS重新啟動(dòng)時(shí)刷新計數器。
Application["count"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
//在新會(huì )話(huà)啟動(dòng)時(shí)運行的代碼,會(huì )話(huà)建立,計數器+1,防止錯誤先鎖定后解鎖。重復刷新頁(yè)面不會(huì )更改計數器,只有建立新會(huì )話(huà)才可以。
Application.Lock();
Application["count"] = (int)Application["count"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
//在會(huì )話(huà)結束時(shí)運行的代碼。此處主要是用來(lái)統計在線(xiàn)人數,如只需要計數,可以不需要此處代碼。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式設置為
// InProc 時(shí),才會(huì )引發(fā) Session_End 事件。如果會(huì )話(huà)模式
//設置為 StateServer 或 SQLServer,則不會(huì )引發(fā)該事件。
Application.Lock();
Application["count"] = (int)Application["count"] - 1;
Application.UnLock();
}
protected void Page_Load(object sender, EventArgs e)
{
//頁(yè)面中直接使用Application["count"]。
Response.Write("你是本網(wǎng)站第"+Application["count"]+"個(gè)訪(fǎng)問(wèn)者");
}
注意:Application與Session的區別。前者為應用程序的變量,后者為會(huì )話(huà)的變量。則前者保持時(shí)間長(cháng),不得亂用。
聯(lián)系客服