2011-08-10 1 views
1

Je dois enregistrer des sessions utilisateur uniques dans des pages Web Webmatrix/Razor/ASP.NET. Est-ce que _appstart se déclenche juste au moment où l'application tourne la première fois dans IIS ou se déclenche-t-elle une fois par utilisateur unique? Si juste une fois, comment puis-je capturer des sessions utilisateur uniques & paramètres? MISE À JOUR: Je ne savais pas si les événements Global.asax étaient déclenchés sous Razor/ASP.NET WebPages. Je l'ai testé et l'événement Session_Start se déclenche très bien. Question résolueComment capturer des sessions utilisateur uniques dans des pages Web Webmatrix/Razor/ASP.NET?

void Session_Start(object sender, EventArgs e) 
{ 
    // Code that runs when a new session is started 
    Dictionary<DateTime, String> d = new Dictionary<DateTime, String>(); 
    Application.Lock(); 
    if (Application["d"] != null) 
    { 
     d = (Dictionary<DateTime, String>)Application["d"]; 
    } 
    d.Add(DateTime.Now, HttpContext.Current.Session.SessionID); 
    Application["d"] = d; 
    Application.UnLock(); 

} 

Répondre

2

Vous avez posé des questions sur la journalisation « sessions utilisateur unique », qui est un peu déroutant. Toutes les sessions sont uniques, mais toutes les sessions n'appartiennent pas à des visiteurs uniques. Les visiteurs qui reviennent vont commencer de nouvelles sessions. Si vous souhaitez conserver le nombre de sessions, vous pouvez vous connecter à l'événement Session_Start dans Global.asax. Si vous voulez compter les visiteurs uniques, utilisez des cookies. Définissez-les quand un utilisateur visite si un cookie n'a pas déjà été trouvé. Assurez-vous que leur expiration est un moment dans le futur. Si le visiteur n'a pas de cookie de suivi pour votre site, il doit être nouveau (ou il peut avoir supprimé son cookie ...)

+0

Je ne savais pas si les événements Global.asax étaient déclenchés sous Razor/ASP WebPages .NET Je l'ai testé et l'événement Session_Start se déclenche très bien. Question résolue Merci! –

3

Pour répondre directement à votre question, _AppStart s'exécute lorsque le premier utilisateur accède à votre site. Les futurs utilisateurs du site ne provoquent PAS l'exécution de _AppStart. Il n'y a pas de page ou de lieu spécifique pour mettre du code qui s'exécute pour chaque utilisateur unique.

Ce que vous voulez faire est de regarder l'objet Session ASP.Net. Dans votre page, vous pouvez stocker et récupérer des données de session comme ceci:

@{ 
    // Retrieve 
    var someSetting = Session["SomeSetting"] 
    // Store 
    Session["SomeSetting"] = someSetting; 
} 

ASP.Net prendra soin de faire en sorte que le réglage est stocké instance par navigateur en utilisant les cookies de session. Notez que si vous êtes dans un environnement Web Farm, vous aurez besoin de quelque chose de plus robuste, mais quand vous parlez d'un seul serveur, cela devrait aller.

Si vous voulez plus d'informations, voici la documentation officielle de l'état de session ASP.Net: http://msdn.microsoft.com/en-us/library/ms178581.aspx

Questions connexes