2012-11-06 20 views
5

ASP.NET çerçevesini (C# ile) kullanıyorum ve her kullanıcı için Oturum değişkenleri yapıyorum. Intialize edilmiş tüm Oturumlar boyunca yinelemek mümkün mü? Bu yinelemede, bazı oturumların bazı özelliklerini değiştirmek istiyorum.C# Sunucuda saklanan tüm Oturumlar üzerinden yineleme mümkün mü? #

Oturum değişkenlerinde saklanan bazı verileri değiştirmeye çalışıyorum. Oturumlarını değiştirmek istediğim belirli kullanıcıların oturum kimlikleri var, bu yüzden Ids'ları da mukayese edebilmem gerekiyor.

+2

Cevabın "Evet" olduğunu varsayalım. Bundan sonra ne ihtiyacın var? Sorunuz eksik. arasında –

+1

duplikat [soru 1] (http://stackoverflow.com/questions/1470334/list-all-active-asp-net-sessions) ya da [soru 2] (http://stackoverflow.com/questions/8854176/get-a-listesi-of-all-aktif-oturumları-in asp-net). – Candide

+0

http://weblogs.asp.net/imranbaloch/archive/2010/04/05/reading-all-users-session.aspx – Tariqulazam

cevap

0

Bunu işlemek için herhangi bir çerçeve sınıfı olup olmadığından emin değilim, ancak her istek için IIS sunucusunda oluşturulan oturumlara gerçekten dönmeniz gerekiyorsa, her bir oturumu kendi koleksiyon nesnesinde saklayamazsınız. kodunuzdan erişim Örneğin, global.asax dosyasında, belirli bir oturumu Listenize kaydetmek için kendi kodunuzu Session_Start etkinliğine ekleyebilirsiniz. Seansın Session.IsNewSession özelliği ile yapılabilen yeni bir oturum olup olmadığını kontrol etmeniz gerekir. Yeni bir oturum oluşturulduğunda, Global.asax'daki Session_Start olayı tetiklenir.

Ama zaman aşımı veya son ne zaman Listesinden oturumları kaldırmak yoksa sorunlar olabilir, bu nedenle nasıl bunu hakkında gidebilir geçerli:

session_start durumunda
  • , bu kontrol edin. Session.IsNewSession boolean değeri

  • Session.IsNewSession öğesi doğruysa, geçerli oturumu alın (this.Session'ı kullanarak, Global.asax geçerli yeni oturumu içeriğinde bulunduğundan) ve anahtar ile bir Dictionary nesnesine kaydedin. Session.SessionId olarak.

  • Bu, sunucuda oluşturulan her Oturum için benzersiz bir anahtar çifti koleksiyonu oluşturacaktır. Session_End durumunda

  • sona erdi biridir akım Oturum (this.Session) ait Session.SessionID özelliği olsun.

  • Oturumları içeren Sözlük'te anahtar değer çiftini kaldırmak için bitmiş Oturum değerinin Session.SessionID değerini kullanın. Bu altyapı mevcuttur ve sözlük nesne uygulama kodunuz tarafından erişilebilir bir yerde oturuyor kez

, bu sözlüğü almak ve en Server aktif Oturumlar taşıması için yineleyebilirsiniz zaman içinde.

+0

Bu çalışmıyor. Oturum açtıktan sonra bir denetleyiciden gelen kod, 'Session.SessionId' öğesini 'foo' (örnek) olarak gösterir. Statik oturum listemi düzenlerim ve aynı şeyi 'foo' ile bulurum. Ama özelliklerin geri kalanı eşleşmiyor. Sanki iki kopyası varmış gibi. – Paul

İlgili konular