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 :

Problème d'enregistrement de variables de session


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut Problème d'enregistrement de variables de session
    Bonjour,

    J'ai un site installé sur un ordinateur Windows XP sur un domaine.
    Je m'y connecte de 2 manières sur le poste XP qui fait office de serveur d'application:
    - en localhost où tout fonctionne bien
    - en adresse DNS où il y a le problème
    Remarque: le problème ne se produit pas sur un serveur Windows 2003.

    Le problème est : sur la première page j'enregistre en variable de session une valeur comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Web.HttpContext.Current.Session["idSession"] = idSession;
    Je vais sur la deuxième page pour récupérer la variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int idSession = int.Parse(System.Web.HttpContext.Current.Session["idSession"].ToString());
    Et j'obtiens l'erreur:
    [NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.]
    EvaluationFormateur.QuestionnaireFormateur.Page_Load(Object sender, EventArgs e) in D:\Projet\formation\EvaluationFormateur\QuestionnaireFormateur.aspx.cs:55
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
    System.Web.UI.Control.OnLoad(EventArgs e) +99
    System.Web.UI.Control.LoadRecursive() +50
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
    Cordialement
    JM

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu t'y rends comment sur la 2nd page?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Bonjour,

    Désolé de répondre aussi tardivement mais je pensais être prévenu par mail des réponses.

    Pour changer de page je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Redirect("~/WebForm1.aspx", false);
    j'ai essayé la redirection en mettant l'adresse complète de la page (en DNS et même avec l'adresse ip), mais ça ne change rien.
    Je suppose que ça peut venir d'un paramétrage dans IIS puisque en Windows XP c'est IIS 5 et sous Windows Server 2003 c'est IIS 6. Mais je ne maîtrise pas suffisamment le sujet. Toutefois dans le Web.config j'ai ajouté le paramétrage suivant qui normalement est déjà par défaut :

    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
        <system.web>
    		<pages enableSessionState="true">
    		</pages>
    		<sessionState
    			mode="InProc"
    			stateConnectionString="tcpip=127.0.0.1:42424"
    			stateNetworkTimeout="10"
    			sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    			sqlCommandTimeout="30"
    			customProvider=""
    			cookieless="UseCookies"
    			cookieName="ASP.NET_SessionId"
    			timeout="20"
    			allowCustomSqlDatabase="false"
    			regenerateExpiredSessionId="true"
    			partitionResolverType=""
    			useHostingIdentity="true">
    			<providers>
    				<clear />
    			</providers>
    		</sessionState>
        </system.web>
    Cordialement
    JM

  4. #4
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Quand tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Web.HttpContext.Current.Session["idSession"] = idSession;
    d'ou sort la variable idSession?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    idSession contient une valeur : exemple l'entier 1.
    Je n'ai pas fais ce genre d'étourderie. C'est une vraie question.
    Cordialement
    JM

  6. #6
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par jmmontes Voir le message
    idSession contient une valeur : exemple l'entier 1.
    Ce n'est pas le resultat d'une requete/fonction qui peut renvoyer null ? La question est basique mais probable...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    J'ai supprimé tout le superflux dans le code.
    J'ai testé avec la valeur 1.
    Il n'y a pas d'accès à une base de données

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    C'est un détail mais la lecture de la variable de session est plus que bizarre :

    - tu enregistres un int dans les variables de session (pas de problème).
    - par contre tu récupéres cet int, tu fais un ToString dessus pour refaire un Parse dessus !

    Désolé, ca marche sans doute mais ca n'a aucun sens de procéder ainsi. (les Item de HttpSessionState sont de type object, donc si on y écrit un int on récupére un int, et c'est tout).

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Si je fais la même chose avec un string et que je le récupère sans parse, le problème est toujours le même en localhost le fonctionnement est correct et en nom DNS j'ai une erreur. La question est là. Ce n'est probablement pas une problème de codage.

  10. #10
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Dans ce cas, a ta place, je mettrais des traces pour m'assurer qu'on passe bien dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Web.HttpContext.Current.Session["idSession"] = idSession;
    avec idSession != null avant l'appel à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int idSession = int.Parse(System.Web.HttpContext.Current.Session["idSession"].ToString());
    Si oui, essaye de poster un code minimal qui reproduit le probleme pour qu'on puisse tester sur un autre serveur...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Désolé d'être imprécis. Voici le code:

    Page Default.aspx qui est la page de démarrage:

    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
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Page sans titre</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
     
        </div>
        </form>
    </body>
    </html>
    La partie C#:
    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
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
     
    namespace WebApplication1
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Session["test"] = "1";
                Response.Redirect("~/WebForm1.aspx", false);
     
            }
        }
    }
    Code de la seconde page:

    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
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Page sans titre</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
     
        </div>
        </form>
    </body>
    </html>
    Le C# de la seconde page:
    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
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
     
    namespace WebApplication1
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                string test = System.Web.HttpContext.Current.Session["test"];
            }
        }
    }
    Et le web.config:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?xml version="1.0" encoding="utf-8"?>
     
    <configuration>
     
        <appSettings/>
        <connectionStrings/>
     
        <system.web>
    		<pages enableSessionState="true">
    		</pages>
            <!-- 
                Définissez compilation debug="true" pour insérer des symboles 
                de débogage dans la page compilée. Comme ceci 
                affecte les performances, définissez cette valeur à true uniquement 
                lors du développement.
            -->
            <compilation debug="true" />
            <!--
                La section <authentication> permet la configuration 
                du mode d'authentification de sécurité utilisé par 
                ASP.NET pour identifier un utilisateur entrant. 
            -->
            <!--<authentication mode="Windows" />-->
            <!--
                La section <customErrors> permet de configurer 
                les actions à exécuter si/quand une erreur non gérée se produit 
                lors de l'exécution d'une demande. Plus précisément, 
                elle permet aux développeurs de configurer les pages d'erreur html 
                pour qu'elles s'affichent à la place d'une trace de la pile d'erreur.
     
            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
    		<sessionState
    			mode="InProc"
    			stateConnectionString="tcpip=127.0.0.1:42424"
    			stateNetworkTimeout="10"
    			sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    			sqlCommandTimeout="30"
    			customProvider=""
    			cookieless="UseCookies"
    			cookieName="ASP.NET_SessionId"
    			timeout="20"
    			allowCustomSqlDatabase="false"
    			regenerateExpiredSessionId="true"
    			partitionResolverType=""
    			useHostingIdentity="true">
    			<providers>
    				<clear />
    			</providers>
    		</sessionState>
     
    	</system.web>
    </configuration>

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Bonjour,

    Je pense être sur la voie de la résolution de mon problème.
    En effet si je paramètre dans le Web.config: au lieu du paramétrage par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cookieless="UseCookies"
    j'accède bien à ma seconde page sans erreur

    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
    <system.web>
    		<pages enableSessionState="true">
    		</pages>
    		<sessionState
    			mode="InProc"
    			stateConnectionString="tcpip=127.0.0.1:42424"
    			stateNetworkTimeout="10"
    			sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    			sqlCommandTimeout="30"
    			customProvider=""
    			cookieless="UseUri"
    			cookieName="ASP.NET_SessionId"
    			timeout="20"
    			allowCustomSqlDatabase="false"
    			regenerateExpiredSessionId="true"
    			partitionResolverType=""
    			useHostingIdentity="true">
    			<providers>
    				<clear />
    			</providers>
    		</sessionState>
        </system.web>
    Je suppose que le service informatique a mis en place une stratégie de groupe qui interdit les cookies sur les PC du domaine. C'est pourquoi en mettant le PC dans le domaine le site ne fonctionne pas bien.
    Qu'en pensez-vous?
    J'ai posé la question au service informatique de ma boite. Je vous dirai ce qu'il en est exactement.

    En tout cas merci pour votre implication.
    Cordialement

Discussions similaires

  1. [MySQL] problème de gestion des variables de sessions (même navigateur)
    Par alaska750 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/08/2009, 16h59
  2. Problème de récuperation des variables de session
    Par paradeofphp dans le forum ASP.NET
    Réponses: 10
    Dernier message: 02/03/2007, 15h40
  3. Enregistrement des variables de session
    Par zelkin dans le forum Langage
    Réponses: 5
    Dernier message: 23/11/2006, 21h41
  4. Réponses: 4
    Dernier message: 20/06/2006, 13h12
  5. Où peut on enregistrer des variables de session ????
    Par flydragon dans le forum Langage
    Réponses: 8
    Dernier message: 11/05/2006, 18h02

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