2010-01-11 6 views
1

J'ai une application Web ASP.NET qui prend l'entrée de l'utilisateur sur plusieurs formulaires. Un peu comme un assistant. Sur le premier formulaire, l'utilisateur entre les informations puis clique sur le bouton "Suivant". Dans l'événement Click du bouton, j'enregistrer des informations sur l'objet Session (via Propriétés dans la page Master). Je redirige ensuite vers la page suivante.Valeurs de session null après la redirection sauf lors de l'exécution en mode VS Debug

Voici un exemple de ce que je fais:

Dans la page poing ...

protected void NextButton_Click(Object sender, EventArgs args) 
{ 
    //Go to the next form 
    Master.SessionVal1 = Value1; 
    Master.SessionVal2 = Value2; 
    Response.Redirect("~/TheNextPage.aspx", false); 
} 

Dans les MasterPage.cs ..

public long Value1 
{ 
    get { return (long)Session["Value1"]; } 
    set { Session["Value1"] = value; } 
} 

public long Value2 
{ 
    get { return (long)Session["Value2"]; } 
    set { Session["Value2"] = value; } 
} 

choses assez basique. Quand je lance ceci en mode débogage dans VS2008 cela fonctionne parfaitement. Quand je pousse ceci à un serveur de test (IIS7) j'obtiens des exceptions de NullReference quand j'essaye d'accéder à Value1, Value2, etc. qui est stocké dans l'objet de session.

MISE À JOUR: J'ai découvert que si je migrais le code vers un serveur, le problème est décrit ci-dessus. MAIS, si je fais la promotion sur un autre serveur, cela fonctionne comme prévu.

Les deux serveurs sont Windows Server 2008 avec IIS7. J'ai regardé les paramètres du pool d'applications et les paramètres de gestion d'état et je ne vois aucune différence.

Répondre

0

Ok, je viens d'ajouter ceci au web.config:

<sessionState cookieless="true" /> 

et qui a fonctionné, mais il doit y avoir une autre façon de résoudre ce problème.

0

Quelque chose est différent avec la configuration pour ces deux machines, sans aucun doute à ce sujet.

Alors vous avez fait un diff sur web.config pour ces deux machines et elles sont identiques? Pas juste un coup d'oeil rapide, mais l'exécuter à travers un programme diff? (J'aime CompareIt!)

Si c'est le cas, vous devez remonter le reste de l'arborescence de configuration ... master web.config dans le répertoire d'installation ASP.NET ... Puis machine.config.

Vous trouverez quelque chose.

Questions connexes