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 :

[ASP.NET/C#] Récupérer session côté serveur


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [ASP.NET/C#] Récupérer session côté serveur
    Bonjour à tous,

    Je créé quelques variables de sessions pour une application web.
    J'arrive bien à les récupérer lorsque je passe d'une page à une autre.
    Mais, lorsque j'ouvre une popup, je n'arrive pas à les récupérées.
    Comment palier à ce problème ?

    Merci pour votre aide !!!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Un petit up ?

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Probablement que tu ouvres une poup dont l'url se situe en dehors de l'application courante car le fait d'ouvrir une popup ne change strictement rien au mécanisme de session.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Merci pour ta réponse stephane eyskens,
    Mais pourtant le popup a bien une url dan sl'application courante.

    J'ai une page login.aspx, qui, quand je me loggue, implémente un objet de la classe sgaSession qui ressemble à ça:
    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
     
     
    public class sgaSession
    {
    	public sgaSession()
    	{
    		//
    		// TODO: Add constructor logic here
    		//
    	}
        public static string Username
        {
            get { return (string)HttpContext.Current.Session["username"]; }
            set { HttpContext.Current.Session["username"] = value; }
        }
        public static string Domain
        {
            get { return (string)HttpContext.Current.Session["domain"]; }
            set { HttpContext.Current.Session["domain"] = value; }
        }
        public static string Password
        {
            get { return (string)HttpContext.Current.Session["password"]; }
            set { HttpContext.Current.Session["password"] = value;}
        }
     
        public static string SgaAccount
        {
            get { return (string)HttpContext.Current.Session["domain"] + "\\" + HttpContext.Current.Session["username"]; }
        }
    }
    Je récupère ces variables à plusieurs reprise dans différentes pages.
    mais dans chacune des popups où je veux les récupérer, j'ai l'erreur suivante:

    Object reference not set to an instance of an object.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

    Source Error:


    Line 38: public static string SgaAccount
    Line 39: {
    Line 40: get { return (string)HttpContext.Current.Session["domain"] + "\\" + HttpContext.Current.Session["username"]; }
    Line 41: }
    Line 42: }


    Source File: c:\Inetpub\wwwroot\portal\App_Code\sgaSession.cs Line: 40
    Et j'ouvre les popups de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <input type='button' onClick="window.open('url','','width=350,height=234,toolbar=no,copyhistory=yes')">
    Y'a t'il quelque chose qui ne va pas dans ma manière de procéder ?

  5. #5
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Oui, car si HttpContext.Current.Session["username"] n'est pas initialiser, alors il est null.
    Tu doit d'abord tester que tes variables de session soient bien initialiser avant de les appeler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (HttpContext.Current.Session["username"] != null)
       string username = HttpContext.Current.Session["username"].ToString();

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Ok, j'ai trouvé,
    Je suis vraiment idiot.

    Dans mon popup, je définissais et initialisait mon objet active directory (qui prend pour paramètre une variable de session) à la "racine de la classe" et pas dans la fonction (Page_Load())

    Moi je faisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public partial class otherPhones : System.Web.UI.Page
    {
    ADuser u = new ADuser(sgaSession.SgaAccount);
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                  ....
    Alors qu'il fallait faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    public partial class otherPhones : System.Web.UI.Page
    {
     
        public ADuser u = null;
     
        protected void Page_Load(object sender, EventArgs e)
        {
            u = new ADuser(sgaSession.SgaAccount);
            if (!IsPostBack)
            {
                  ....
    Merci grandement pour votre aide en tout cas :hello:

Discussions similaires

  1. [c#][asp.net]variable de session type tableau multidim
    Par chorokari dans le forum ASP.NET
    Réponses: 4
    Dernier message: 18/07/2008, 22h34
  2. Réponses: 6
    Dernier message: 07/02/2008, 10h35
  3. [SESSION ASP.NET]Perte de session après le Page_Unload
    Par ccambier dans le forum ASP.NET
    Réponses: 10
    Dernier message: 23/10/2007, 15h04
  4. [ASP.NET 2.0]Session VS. Profile
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/05/2007, 09h37
  5. Réponses: 6
    Dernier message: 02/12/2006, 20h51

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