sesja użytkowników (bez logowania) w ASP .NET Web Forms

0

Witam
Mam mały menadżer plików. Potrzebuję wychwycić użytkownika który uploaduje jakiś plik na serwer. Mianowicie- nie chodzi tu o logowanie, o użytkowników zalogowanych. Po prostu, coś w stylu; użytkownik wchodzi na stronę i jest mu przypisywany automatycznie jakiś id session i w aplikacji będzie można wychwycić ile użytkownik o określonym id session wgrał plików na serwer (do folderu Uploads), oraz ilu jest aktywnych- tak jak tutaj np wyświetla się "jest x gości".
Wydaję mi się, że najlepiej by było tak to zrobić poprzez generowanie dla każdego wchodzącego użytkownika jakiegoś id session, ale nie wiem jak to zrobić.
Będę wdzięczny za pomoc

0

Wygenerować id i zapisać w ciastku. Podczas uploadu pliku odczytać ciastko i już masz swoje id sesji.

0

Ale przecież sesję masz dostępną w asp .net bez logowania.
http://msdn.microsoft.com/en-us/library/ms178581.aspx
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid(v=vs.100).aspx

  1. W sesji dla danego użytkownika składujesz licznik uploadów, który podbijasz po udanym zapisie pliku
    Session["UploadsCount"] = (int)Session["UploadsCount"] + 1; // warto na starcie sesji ten licznik ustawić na zero :)
  2. Na start sesji podbijasz licznik w Application, a na end sesji obniżasz licznik
    OnSessionStart: Application["UsersCount"] = (int)Application["UsersCount"] + 1;
    OnSessionEnd: Application["UsersCount"] = (int)Application["UsersCount"] - 1;

Oczywiście jeśli masz kilka serwerów z load balancerem i sesję dalej składujesz inproc to cały pomysł bierze w łeb (wtedy np. sesję trzymasz w bazie), ale jeśli mówimy o jednym web serverze to jest ok. Aleo takim przypadku można dość długo się rozpisywać.

0

Unikalny IdSesji możesz wygenerować za pomocą Guid.NewGuid() - http://msdn.microsoft.com/pl-pl/library/system.guid.newguid%28v=vs.110%29.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1