Perte de session après suppression de répertoire - C#/.NET managed - Programmation
Marsh Posté le 25-10-2006 à 12:19:44
t'es sur xp pro ?
au passage, pourquoi t'utilises pas visual web developer express ?
Marsh Posté le 25-10-2006 à 16:45:04
Le site est pas hébergé en local. Il est sur un serveur avec Windows Server 2003, IIS 6.
Et pourquoi pas visual web dev ? Parce que j'ai toujours utilisé un éditeur de texte pour tous mes devs en fait... Voilà, pas l'habitude quoi.
Marsh Posté le 25-10-2006 à 21:10:29
visual web dev, tu peux l'utiliser comme éditeur de texte
et utiliser juste le fait d'avoir l'intellisense, et rien que pour ça, ca déchire le reste. Ca détecte automatiquement tes classes, et ca te propose les méthodes de tes classes par intellisense
bon sinon pour ton problème, j'en ai aucune idée
tu dis qu'il y a 4 modes de session, t'as essayé les 2 autres ?
Marsh Posté le 26-10-2006 à 09:15:43
Le troisième mode c'est sqlServer, et ça me plait moyen, j'avais pas trop le temps de le tester, et comme c'est un site plutot costaud avec déjà pas mal d'accès à la bdd, je voulais pas en rajouter.
Le 4ème, c'est le mode customisé, et là j'ai pas tout compris encore...
J'ai essayé un truc un peu barbare :
Code :
|
Mais ça ne marche pas... Je ne comprends pas...
Marsh Posté le 26-10-2006 à 12:10:18
et avec response.session et request.session, plutot, dans ton dernier exemple ?
genre :
Code :
|
D'ailleurs si c'est du code behind, par défaut tu peux pas utiliser les objets request et response.
Tu devrais vraiment utiliser visual web dev, ca te dirait ce qui est faux dans ton code
Marsh Posté le 27-10-2006 à 11:27:39
J'ai jamais utilisé les objets response et request pour les sessions en fait
Oui je sais, visual web dev, c'est bieng, mais le truc c'est qu'on utilise autant d'asp que d'asp.net, on est en pleine migration pour l'instant.
Quand on fera plus que de l'asp.net, on y passera sûrement...
J'essaiera ta solution.
PS : Je sais c'est sale, mais j'ai pas de codebehind, j'ai tout dans ma page
Marsh Posté le 27-10-2006 à 12:10:54
T'es pas obligé d'utiliser visual web dev pour tous tes développements
pour le codebehind, moi non plus je l'utilise pas, sinon mon patron est perdu et comprend plus rien
Marsh Posté le 06-11-2006 à 10:13:49
Bon, j'ai installé le site sur un autre serveur, en l'occurence mon serveur perso, et du coup, pas de perte de session lors de la suppression de répertoire.
Donc c'est un problème de configuration IIS... mais d'où, je ne sais pas...
Si vous avez des idées sur la gestion des sessions dans IIS, n'hésitez pas
Marsh Posté le 06-12-2006 à 16:31:18
si tu utilises ServerState, il faut lancer le service
ASP.NET State Service et mettre son type de démarrage
(Startup Type) pour qu'il démarre de façon automatique.
Par contre sais tu comment faire pour rediriger le user vers une page apres le timeout des variables de session. par défaut il est à 20mn et j'aimerais apres expiration redirigé vers une page de login !
j'ai essayé ceci mais sans succès :
Code :
|
Marsh Posté le 11-12-2006 à 15:17:29
losloshigh a écrit : si tu utilises ServerState, il faut lancer le service
|
Ben j'avais essayé serverstate, mais ça marchait pas... J'ai pas trop fouillé non plus.
J'ai trouvé la solution à mon problème. En fait, il faut utiliser le framework 1.1. Avec le 2, ya perte de session, alors qu'avec le 1.1, non. Bizarre hein ? Oui, je sais, mais je comprends pas pourquoi...
Sinon pour ton souci, moi je fais une fonction ASP qui vérifie si une des variables de session existe, je mets cette fonction en haut de chaque page, et si la variable n'existe pas, alors je redirige vers une page de login...
Marsh Posté le 07-03-2008 à 19:25:59
Même problème en C#...
Peux-tu développer la façon avec laquelle tu as résolu le problème ? Changement de framework ? D'autres solutions vu que je ne suis pas administrateur ?
Merci d'avance.
Marsh Posté le 07-03-2008 à 21:07:05
non absolument pas changé de framework.
La raison pour laquelle ASP.NET peut perdre la session, est que le processus asp réorganise en interne sa mémoire.
C'est aléatoire et le seul moyen de ne pas les perdre est de soit passer en STATESERVER, soit en mode SQL SERVER pour la gestion des sessions.
Il ne faut surtout pas rester dans le mode standards.
La plus simple et la plus efficace, est le mode STATESERVER, mais il faut que le service de gestion des sessions asp.net soit lancé dans Windows.
De plus, il faut pour les deux mots STATESERVER et SQL SERVER que tout les objets qu'on met en session soit SERIALIZABLE.
hope this help
Marsh Posté le 23-10-2006 à 16:49:28
Bonjour,
J'ai depuis quelques temps un problème de perte des informations de session avec un site en asp.net.
C'est un site de gestion de fichiers, donc ajout, suppression de repertoires, upload de fichiers, etc, etc...
J'ai donc la page principale, ou les fichiers et dossiers sont affichés. Un lien "supprimer un répertoire" avec une listbox de choix du répertoire qui redirige vers une page de confirmation (je voulais faire un confirm() javascript sur l'asp.net, mais j'ai pas réussi, trop le bordel).
Cette page de confirmation, deux boutons, Oui et Non. Non fait une redirection (les variables de session sont conservées sans souci), et le bouton Oui fait la suppression du répertoire demandé, et perd, à la suite de cette action, toutes les variables de session.
Le Code de la suppression du répertoire :
Si on met en commentaires la lige MainDir.Delete(True), alors les variables de session ne sont pas perdues.
C'est donc cette action qui modifie la session, et je ne vois pas pourquoi.
Il y a quatre modes de session en asp.net
Par défaut, c'est le mode InProc. J'ai voulu passer au mode ServerState, mais j'obtiens l'erreur suivante :
Unable to make the session state request to the session state server. Please ensure that the ASP.NET State service is started and that the client and server ports are the same. If the server is on a remote machine, please ensure that it accepts remote requests by checking the value of HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection. If the server is on the local machine, and if the before mentioned registry value does not exist or is set to 0, then the state server connection string must use either 'localhost' or '127.0.0.1' as the server name.
J'ai essayé plein de trucs dans la base de registre et dans le web.config, mais rien ne marche.
Au passage, je n'utilise pas visual studio, je fais avec un éditeur de texte.
Voilà, il faut que je trouve rapidement une solution pour ce problème, puisque je dois bientôt livrer le site aux clients (ce site doit remplacer le FTP chez nous...)
Merci d'avance pour votre aide.