2009-03-24 8 views
1

Actuellement, nous ouvrons une nouvelle page aspx avec window.open. Le window.open est dans une fonction javascript (openNewWindow()) dans la page aspx actuelle qui est appelée quand un contrôle de lien hypertexte asp.net est cliqué.Perdre l'état de la session après la fermeture d'une fenêtre ouverte avec window.open

Les liens sont créés dynamiquement sur la page de notre cadre et je serais donc comme pour éviter de changer cette fonctionnalité.

Le problème semble être que lorsque cette nouvelle fenêtre 'enfant' est fermée, l'état de la session est perdu. Je devrais mentionner que la session est disponible dans la fenêtre enfant juste pas dans la fenêtre 'parent' après que la fenêtre 'enfant' soit fermée. Assez curieusement, il semble qu'ailleurs dans notre application, si un appel open.window est ajouté à une page en utilisant un appel ClientScriptManager.RegisterStartupScript sur l'événement clickbehind d'un contrôle de lien hypertexte (plutôt que d'appeler une fonction qui est codé dans l'aspx) la session est préservée.

Cette dernière solution serait difficile à mettre en œuvre dans le code cadre actuel sans changement significatif et tous les tests de régression qui entraînerait.

Tout le monde a des idées sur la façon de garder l'état de session actif après la fermeture de la fenêtre enfant.

BTW cela se produit dans IE7 et notre application est basée sur asp.net 2.0.

Merci d'avance pour vos solutions perspicaces et élégantes à ce problème! ; O)

+0

Tout d'abord, ajoutez un gestionnaire d'événements Session_OnEnd au global.asax pour savoir quand et si cela se produit réellement ... – annakata

+0

(En supposant que vous n'êtes pas dans un mode session personnalisé - votre cookie de session est-il basé?) – annakata

Répondre

0

Edit: Whoops - désolé, je clique au lieu de répondre à un commentaire

Je suis désolé que je n'ai pas de réponse, mais je suis confronté à un problème similaire, mais il est intermittent et Je ne peux pas le dupliquer avec succès.

J'ai un client qui ne cesse de se redirigé vers notre page de connexion après une nouvelle fenêtre du navigateur est ouvert - pour les pages amicales d'imprimante, des liens dynamiques. Cela se produit lors de l'utilisation d'un lien avec la cible définie sur _blank. En fait, cela s'est produit sur ma station de travail plusieurs fois lors de la création de l'application, mais je n'ai pas pu la reproduire depuis.

Merci à quiconque peut fournir un aperçu/résoudre ce problème.

0

je me corriger (désolé ne peut pas modifier la question initiale) et dire que le contrôle de tir le javascript pour faire « window.open » est un bouton de lien pas un lien hypertexte.

1

IE 7 a modifié le comportement des nouvelles fenêtres. Fondamentalement, chaque fenêtre est ouverte dans son propre processus. Les onglets sont toujours ouverts dans le même processus.

Cela signifie que chaque nouvelle fenêtre aura son propre sac à biscuits. Ce qui signifie que le cookie Sesssion_ID n'est pas affecté automatiquement à la nouvelle fenêtre. Le contrôle de lien .Net enverra les cookies à la nouvelle fenêtre. Cependant, il suffit d'ouvrir une nouvelle fenêtre avec javascript directement ne fera probablement pas cela. FireFox a été de cette façon pendant un certain temps, et Chrome, je crois, a toujours été de cette façon. IE 6 et l'espace de traitement partagé précédent, même pour plusieurs fenêtres de sorte que tout a été partagé entre les deux, ce qui n'a causé aucune fin de maux de tête pour le débogage des sites strictement dans IE.

MISE À JOUR
Here's a link qui décrit le problème en détail. Vous remarquerez que ce comportement est quelque peu incohérent. La raison en est que parfois IE 7 décide d'ouvrir la nouvelle fenêtre dans son propre processus, et parfois il l'ouvre dans un nouveau.

Il existe deux vraies solutions. Cessez de vous fier entièrement à la session (mon premier choix, et j'ai de fortes raisons techniques à cela) ou vous devez passer à une session sans cookies.

Questions connexes