2011-07-07 28 views
5

Tôi cần đếm số phiên nhưng liều không hoạt động khi tôi nói nếu số phiên là 2 thì làm gì đó. Ví dụ bên dưới là mã của tôi:đếm số phiên trong ASP.net/c#

// count curent session in order to keep two player 
    if (HttpContext.Current.Session.Count == 2) 
    { 
    Response.Redirect("update.aspx"); 
    } 

Tôi đặt mã ở trên vào mã phía sau. có cách nào khác để tôi có thể nói: nếu số phiên là 2 người khác làm điều gì đó ...

+0

Thuộc tính Đếm được sử dụng để nhận số lượng mục trong bộ sưu tập trạng thái phiên. –

+0

đối tượng phiên chứa một số phiên asp.net quá, không chỉ là những phiên bạn đã đặt. tại sao bạn không đặt một ngắt dòng (phím tắt: F9) và xem số lượng? – iamserious

+0

Đôi khi mở trong 2 cửa sổ trong cùng một trình duyệt (sẽ không được tính là hai phiên. Đôi khi thậm chí từ trình duyệt khác nhau cùng một vấn đề có thể xảy ra. Vui lòng mở trang web từ hai hệ thống (Tôi không chắc chắn; xin lỗi) – tamilnad

Trả lời

2

Đây là số biến phiên được lưu trong phiên cho người dùng đó (msdn reference) ... chứ không phải số các phiên người dùng hiện tồn tại.

Bạn sẽ cần phải lưu trữ số phiên bên ngoài phiên ... có lẽ trong bộ nhớ cache hoặc bộ nhớ cache của ứng dụng.

Dưới đây là một số SO câu hỏi để giúp thực hiện điều này:

0

Bạn có thể sử dụng WMI để truy vấn số phiên tích cực trong một ứng dụng.

+0

cách thực hiện? code về nó bằng cách sử dụng * WMI *? Làm việc cho ** TẤT CẢ các trường hợp ** như chế độ '' là _SQLServer_ và 'InProc'? – Kiquenet

+0

làm thế nào để? bất kỳ mã mẫu thực nào về nó bằng WMI? Làm việc cho ** TẤT CẢ các trường hợp ** Giống như chế độ '' là ** SQLServer và InProc **? 'Cách Session_Start/Session_End có vấn đề Session_End chỉ được gọi cho các phiên" InProc ", không phải nếu các phiên được lưu trữ trong StateServer hoặc SqlServer .' –

+0

Có lẽ điều này sẽ làm việc cho một người nào đó http://www.activexperts.com/admin/scripts/wmi/vbscript/0433/? Vì lý do gì giải pháp này mang lại cho tôi trở lại số không cho mỗi số liệu ... nhưng đó ma y là một cái gì đó sai với máy tính của tôi. Lưu tập lệnh trên trang web này dưới dạng blah.vbs và chạy nó trong cmd.exe –

-2

LƯU Ý: ví dụ này là chỉ dành riêng cho một lập trình viên mới làm quen (KHÔNG cho ASP chuyên gia Programers)

1) Tới Global.asax.cs tập tin và xác định các chức năng ứng dụng khởi động và sau đó thêm một biến Session truy cập. Như thế này ...

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup          
     Application.Add("NOF_USER_SESSION", 0); 

2) Sau đó, trong cùng giữ Global.asax.cs tập tin thêm/giảm số lượng người dùng trong phiên-Startup và chức năng Session-Endup tương ứng ... như thế này ...

 void Session_Start(object sender, EventArgs e) 
     { 
      // Code that runs when a new session is started 
      Application["NOF_USER_SESSION"] =   (int)Application["NOF_USER_SESSION"] + 1; 
.. 
.. 
     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["NOF_USER_SESSION"] = (int)Application["NOF_USER_SESSION"] - 1; 
.. 
.. 

3) Sau đó, sử dụng biến cấp Ứng dụng này (int)Application["NOF_USER_SESSION"] bất cứ nơi nào bạn có thể tham gia chương trình của mình.