Asp.net

如何確定 ASP.NET 站點 (IIS) 上的使用者數?他們的資訊呢?

  • September 30, 2008

有沒有辦法確定在 ASP.NET 應用程序中具有活動會話的使用者數?我在特定應用程序中有一個管理/工具頁面,我想顯示有關所有打開會話的資訊,例如會話數,也許還有請求機器的地址,或每個使用者的其他憑據資訊。

ASP.NET 性能計數器,如 State Server Sessions Active(活動使用者會話的數量)應該可以幫助您。然後你可以從你的管理頁面讀取並顯示性能計數器..

在 global.aspx 中

void Application_Start(object sender, EventArgs e)
{
   // Code that runs on application startup
   Application["OnlineUsers"] = 0;
}

void Session_Start(object sender, EventArgs e)
{
   // Code that runs when a new session is started
   Application.Lock();
   Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1;
   Application.UnLock();
}

void Session_End(object sender, EventArgs e)
{
   // Code that runs when a session ends. 
   // Note: The Session_End event is raised only when the sessionstate 
   // mode is set to InProc in the Web.config file. 
   // If session mode is set to StateServer or SQLServer, 
   // the event is not raised.
   Application.Lock();
   Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1;
   Application.UnLock();
}

注意: Application.Lock 和 Application.Unlock 方法用於防止多個執行緒同時更改此變數。

在 Web.config 中

驗證 SessionState 是否為“InProc”以使其正常工作

   <system.web>
       <sessionState mode="InProc" cookieless="false" timeout="20" />
   </system.web>

在您的 .aspx 文件中

Visitors online: <%= Application["OnlineUsers"].ToString() %>

**注意:**程式碼最初複製自<http://www.aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for-ASP-NET-website.aspx>(連結不再有效)

引用自:https://stackoverflow.com/questions/155593