2010-10-25 2 views

Répondre

0

Si vous utilisez SQL Server comme état de session, la base de données ASPState est utilisée et les tables suivantes sont utilisées.

  1. ASPStateTempSessions
  2. ASPStateTempApplications

et plusieurs procédures stockées et les emplois. vous pouvez l'explorer pour comprendre.

donc si vous n'avez qu'une seule application, ce n'est qu'une simple requête.

select count(*) as NumberOfSessions from ASPStateTempSessions 

Dans le cas où il est configuré avec de multiples applications à l'aide Application Name dans la chaîne de connexion, que vous avez besoin sessionid dans le tableau ASPStateTempSessions, donc

select count(*) as NumberOfSessions from ASPStateTempSessions where sessionid='%YOUR-APP-ID' 
0

Quel est le code du serveur Web utilisez-vous? Si vous utilisez ASP.NET, vous pouvez incrémenter une variable dans Session_Start dans votre fichier Global.asax, puis écrire cette variable sur SQL Server lorsque votre application Web s'arrête dans Application_End. Assurez-vous de verrouiller la variable car deux threads peuvent accéder à la variable en même temps si deux connexions simultanées entrent. Vous ne savez pas si cela répond à votre question. Je vois que vous avez le mot "utilisateurs actifs". Si cela signifie que ceux qui sont actuellement activés, vous pouvez décrémenter le compteur dans Session_End. Ensuite, quelque temps après que l'utilisateur ferme le navigateur, la session de cet utilisateur expire. Vous ne pouvez pas décrémenter correctement quand ils ferment le navigateur, car votre serveur web sait comment le savoir.

+0

Merci 4 votre réponse, mais Session_End ne soit pas tiré lorsque sessionstate est défini sur sqlserver. – Hitesh

Questions connexes