IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

valeur de session qui saute


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut valeur de session qui saute
    bonjour a tous

    un petit probleme qui commence a bien me faire ch....
    apres avoir dev une methode de suppression pour des lignes de GridView qui supprime un repertoire d'images et la ligne de dbb et lors de sont utilisation, une de mes valeur de session disparait littéralement.

    L'item de session est carrement null.

    pour comprendre le shema

    ouverture de session classique.
    authentification par formulaire de l'utilisateur via bdd
    recup de valeurs en element de session.

    un peu de code
    methode authentification (classique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
            public static Boolean Authentifier(Negociateur _Negociateur)
            {
                try
                {
                    String strSQL = "SELECT * FROM Negociateur WHERE Email = @Email";
                    using (SqlCommand cmd = new SqlCommand(strSQL, OutilsDB.Cnx()))
                    {
                        cmd.Parameters.AddWithValue("@Email", _Negociateur.Email);
                        cmd.Connection.Open();
     
                        using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                        {
                            if (dr.Read())
                            {
                                if (dr["Passwd"].ToString() == _Negociateur.Passwd)
                                {
                                    _Negociateur.Nom = (String)dr["Nom"];
                                    HttpContext.Current.Session["NumNegociateur"] = (Int32)dr["NumNegociateur"];
                                    HttpContext.Current.Session["NumAgence"] = (Int32)dr["NumAgence"];
                                    HttpContext.Current.Session["NegociateurID"] = (Guid)dr["NegoID"];
                                }
                                else throw new Exception("Erreur d'authentification !");
                            }
                        }
                    }
     
                }
                catch (Exception)
                {
                    throw;
                }
     
                return true;
            }
    Methode de suppression du GridView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
            protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                try
                {
                    DataKey data = gv.DataKeys[e.RowIndex];
     
                    switch (Mode)
                    {
                        case 0:
     
                            break;
                        case 1:
     
                            break;
                        case 2:
                            MoteurSql.BienDB.delBien(new Guid(data.Value.ToString()));
     
                            //Appel methode sup image
                            OutilsImages _OutilsImages = new OutilsImages();
                            _OutilsImages.NomRepertoire = data.Value.ToString();
                            _OutilsImages.delRepertoire();
                            break;
                        case 3:
                            MoteurSql.ContactDB.delContact(new Guid(data.Value.ToString()));
                            break;
                    }
     
                }
                catch (Exception ex)
                {
                    lblError.Text = ex.Message;
                }
                finally
                {
                    chargeGV(Mode); <--Recharge du GridView (enabledViewstate =false)
                }
            }
    et enfin la methode simple de suppression du repertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            private String str = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["Upload"]);
     
            public void delRepertoire()
            {
                    if(System.IO.Directory.Exists(str + @"\" + _NomRepertoire))
                    System.IO.Directory.Delete(str + @"\" + _NomRepertoire, true);
            }
    Lors du click sur la ligne du GridView, l'operation s'effectue sans aucun probleme, mais au grand mystere les éléments de la session disparaissent.

    Bon voila l'essentiel y est.
    Il est a savoir que selon microsoft les sessions sont supectible de disparaitre a tous moment et sans preavis.

    donc est ce que quelqu'un a deja été confronté au probleme.
    et quel remede a t'il mis en place.
    pour ma part je pense mettre tous cela dans un cookies.

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Tu n'aurais pas eu une exception pendant l'opération ?
    Pour vérifier ça, mets un breakpoint sur la méthode Application_Error du fichier Global.asax.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  3. #3
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    bon apres un debug et une recherche j'arrive a cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    L'exception System.NullReferenceException n'a pas été gérée par le code utilisateur
      Message="La référence d'objet n'est pas définie à une instance d'un objet."
      Source="App_Code.skwcczy5"
      StackTrace:
           à Immobilier.OutilsDivers.AdminRole() dans d:\WebSite\Site\Immobilier\App_Code\OutilsDivers.cs:ligne 39
           à Immobilier.staff_Compte.Page_Load(Object sender, EventArgs e) dans d:\WebSite\Site\Immobilier\staff\Compte.aspx.cs:ligne 17
           à System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
           à System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
           à System.Web.UI.Control.OnLoad(EventArgs e)
           à System.Web.UI.Control.LoadRecursive()
           à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    apres consultation ligne 39 du fichier ca me donne bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public static Boolean AdminRole()
            {
                return ((Int32)HttpContext.Current.Session["NumAgence"]) == 0 ? true : false;
            }
    et ligne 17 sur l'autre page il n'y a rien
    Les valeurs existent bien car lors de l'identification les éléments de session sont remplis

  4. #4
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    Apres des heures de recherche, il sagit, je pense d'un bug

    test a faire
    monté en session des éléments divers.

    faire en sorte de posséder un chemin avec une bonne quantité de caractère.
    ex : D:\Developpement\Immobilier\wwwroot\Images\Upload\8b17e2d7-dc7b-4ae7-bf1f-7e14dde466f7\...

    pour ma part ca donne cela pour le ch de directory

    uitilisé les class Directory ou DirectoryInfo et effectué un delete ou un move sur le repertoire le plus bas et votre session est perdu.

    test realisé sur iis 6 sur win2003 et sur iis 7 sur vista

    existe aussi avec les objects fso en vbscript.

    remede appliqué dans l'attente d'une correction (pour ma part)
    possedant un ticket authentification, j'utilise le user.identity dans le global.asa avec la methode void Session_Start(object sender, EventArgs e)
    pour remonter tout mes object de session depuis la BDD.

    Maintenant si quelqu 'un a un autre remede me faire signe
    Cordialement

Discussions similaires

  1. Problème de session qui ne veut pas garder sa valeur
    Par pierrot10 dans le forum Langage
    Réponses: 10
    Dernier message: 23/06/2011, 12h35
  2. Variables de session qui changent de valeur
    Par webtheque dans le forum Langage
    Réponses: 1
    Dernier message: 17/09/2008, 19h40
  3. Pb de sessions qui se déconnectent
    Par Wedge3D dans le forum ASP
    Réponses: 5
    Dernier message: 09/03/2006, 20h38
  4. Réponses: 8
    Dernier message: 30/11/2005, 10h00
  5. [Sécurité] Session qui ne fonctionne pas!!!!
    Par philippef dans le forum Langage
    Réponses: 5
    Dernier message: 27/10/2005, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo