2010-06-25 3 views
0

J'implémente la structure de partage de session de this link pour un site ASP classique afin de commencer le processus de conversion progressive vers ASP.NET. J'essaie d'étendre le délai d'expiration des cookies afin que les utilisateurs ne soient pas déconnectés du site lorsque la session expire. A l'endroit où le cookie est créé dans SessionPage.cs J'ai ajouté la ligne dans la méthode CreateNewSessionCookie():Définition de l'expiration de cookie avec la solution de partage de session ASP classique vers ASP.NET

cookie.Expires = DateTime.Now.AddDays(14); 

Maintenant, cela fonctionne bien, cependant, il ne fonctionne que si l'utilisateur première visite d'un ASP. Page NET, et puis visite les pages classiques ASP. Cela ne fonctionne pas si vous visitez une page ASP classique d'abord (en regardant le cookie par l'intermédiaire de firefox confirme que les différentes valeurs d'expiration sont données si je visite une page ASP ou ASP.NET en premier.) Je suis encore un peu floue sur la mécanique derrière cette mise en œuvre car je n'ai pas une compréhension complète de la gestion des sessions et des cookies. Cependant, j'aurais pensé que l'objet VB6 SessionMgr appelle la DLL SessionUtility, et utilise donc le même code pour émettre le cookie. J'ai réenregistré le SessionUtility en utilisant gacutil, et l'ai réexposé en utilisant regasm. De quelle autre manière le cookie est-il émis lorsqu'un utilisateur accède à une page ASP classique? Comment puis-je changer l'heure d'expiration?

Répondre

0

Cela pourrait être un hack total, mais puisque vous n'avez pas encore de réponses ...

Itérer à travers la collection Request.Cookies en asp classique et de trouver le cookie de session (vous devriez être en mesure de comprendre sur lequel il est assez facilement). Puis réémettre ce cookie Response.Cookies (sessioncookiename) = sessioncookievalue et définir Response.Cookies (sessioncookiename) .Expires = Maintenant() + 14

+0

Merci, je vais avec ça. Cela m'évite de devoir potentiellement réécrire la page de connexion à ASP.NET. Donc, je pense que c'est une solution de contournement assez raisonnable. – marekc

+0

@spiderdijon poster ici avec votre code si vous l'obtenez au travail et je vais modifier la réponse pour montrer que cela fonctionne (ou ne fonctionne pas) –

Questions connexes