Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1454 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Perte de session après suppression de répertoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Perte de session après suppression de répertoire

n°1463274
backdafuck​up
Back to da old skool
Posté le 23-10-2006 à 16:49:28  profilanswer
 

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 :

Code :
  1. Sub Ok_Click(obj As Object, e As EventArgs)
  2. Dim MainDir As DirectoryInfo = New DirectoryInfo(Chemin)
  3. MainDir.Delete(True)
  4. Response.Redirect(Back)
  5. End Sub


 
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.

mood
Publicité
Posté le 23-10-2006 à 16:49:28  profilanswer
 

n°1463703
backdafuck​up
Back to da old skool
Posté le 24-10-2006 à 08:37:34  profilanswer
 

bon ben up....

n°1464669
backdafuck​up
Back to da old skool
Posté le 25-10-2006 à 11:58:05  profilanswer
 

Personne ?

n°1464677
cosmoschtr​oumpf
dawa powered
Posté le 25-10-2006 à 12:19:44  profilanswer
 

t'es sur xp pro ?
au passage, pourquoi t'utilises pas visual web developer express ?

n°1464911
backdafuck​up
Back to da old skool
Posté le 25-10-2006 à 16:45:04  profilanswer
 

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.

n°1465052
cosmoschtr​oumpf
dawa powered
Posté le 25-10-2006 à 21:10:29  profilanswer
 

visual web dev, tu peux l'utiliser comme éditeur de texte :D
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 [:huit]
 
bon sinon pour ton problème, j'en ai aucune idée [:cupra]
tu dis qu'il y a 4 modes de session, t'as essayé les 2 autres ?


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1465173
backdafuck​up
Back to da old skool
Posté le 26-10-2006 à 09:15:43  profilanswer
 

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 :
  1. Sub Ok_Click(obj As Object, e As EventArgs)
  2.     Dim MainDir As DirectoryInfo = New DirectoryInfo(Chemin)
  3.     Dim SessionVar1 as string
  4.     Dim SessionVar2 as string
  5.     Dim SessionVar3 as string
  6.    
  7.     SessionVar1 = Session("var1" )
  8.     SessionVar2 = Session("var2" )
  9.     SessionVar3 = Session("var3" )
  10.     MainDir.Delete(True)
  11.     Session("var1" ) = SessionVar1
  12.     Session("var2" ) = SessionVar2
  13.     Session("var3" ) = SessionVar3
  14.     Response.Redirect(Back)
  15. End Sub


 
Mais ça ne marche pas... Je ne comprends pas...

n°1465378
cosmoschtr​oumpf
dawa powered
Posté le 26-10-2006 à 12:10:18  profilanswer
 

et avec response.session et request.session, plutot, dans ton dernier exemple ?
genre :
 

Code :
  1. Sub Ok_Click(obj As Object, e As EventArgs)
  2.    Dim MainDir As DirectoryInfo = New DirectoryInfo(Chemin)
  3.  
  4.    Dim SessionVar1 as string = Request.Session("var1" )
  5.    Dim SessionVar2 as string = Request.Session("var2" )
  6.    Dim SessionVar3 as string = Request.Session("var3" )
  7.  
  8.    MainDir.Delete(True)
  9.  
  10.    Response.Session("var1" ) = SessionVar1
  11.    Response.Session("var2" ) = SessionVar2
  12.    Response.Session("var3" ) = SessionVar3
  13.  
  14.    Response.Redirect(Back)
  15. End Sub


 
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 :D

n°1465991
backdafuck​up
Back to da old skool
Posté le 27-10-2006 à 11:27:39  profilanswer
 

J'ai jamais utilisé les objets response et request pour les sessions en fait :D
 
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 :D

n°1466025
cosmoschtr​oumpf
dawa powered
Posté le 27-10-2006 à 12:10:54  profilanswer
 

T'es pas obligé d'utiliser visual web dev pour tous tes développements :p
 
pour le codebehind, moi non plus je l'utilise pas, sinon mon patron est perdu et comprend plus rien :o

mood
Publicité
Posté le 27-10-2006 à 12:10:54  profilanswer
 

n°1471022
backdafuck​up
Back to da old skool
Posté le 06-11-2006 à 10:13:49  profilanswer
 

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

n°1487363
losloshigh
Posté le 06-12-2006 à 16:31:18  profilanswer
 

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 :
  1. <authentication mode="Forms">
  2. <forms name="nom_de_la_form" loginUrl="sw_admin_start_TestPlan.aspx" timeout="1" />
  3. </authentication>

Message cité 1 fois
Message édité par losloshigh le 06-12-2006 à 16:32:22
n°1489597
backdafuck​up
Back to da old skool
Posté le 11-12-2006 à 15:17:29  profilanswer
 

losloshigh a écrit :

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 :
  1. <authentication mode="Forms">
  2. <forms name="nom_de_la_form" loginUrl="sw_admin_start_TestPlan.aspx" timeout="1" />
  3. </authentication>



 
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...

n°1699111
patemino
Fan Club VP
Posté le 07-03-2008 à 19:25:59  profilanswer
 

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.


Message édité par patemino le 07-03-2008 à 19:27:27
n°1699145
moi23372
Posté le 07-03-2008 à 21:07:05  profilanswer
 

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


Message édité par moi23372 le 07-03-2008 à 21:07:21

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Perte de session après suppression de répertoire

 

Sujets relatifs
Garder la trace d'une session pour toutes les pages !Session
probleme de session[C#] Effacer un répertoire contenant des fichiers "readonly"
variable de session pour un sous domaineHistoire de session sous IE
[Bash]Suppression de lignes contenant des mots d'un autre fichierPartage de session entre applications .NET
[Résolu] Filtrer les fichiers d'un répertoirecréer un répertoire
Plus de sujets relatifs à : Perte de session après suppression de répertoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR