2008-11-16 11 views
14

J'ai un objet principal de sécurité personnalisé que je définis dans le global.asax pour le fil actuel et tout va bien, pas de problèmes normalement.Asp.net System.Web.HttpContext.Current.Session null dans global.asax

Cependant, je suis en train d'ajouter une fonction d'image dynamique en ayant une page en charge de l'image et chaque fois que cette page d'image dynamique est chargée, System.Web.HttpContext.Current.Session est null dans global.asax ce qui m'empêche de définir le principe de sécurité comme normal et les problèmes en cascade à partir de ce point.

Normalement, la session est null dans global.asax une seule fois au cours d'une session au démarrage lorsque l'utilisateur se connecte, par la suite, elle est toujours disponible avec cette seule exception.

La page d'image dynamique est chargée lorsque le navigateur rencontre un tage d'image dans la page d'origine à savoir

Je devine que c'est un aspect du fait que le navigateur demande cette page sans envoyer des lettres de créance avec ça?

Toute aide serait grandement appréciée.

Répondre

25

John,

Je suppose que vous utilisez un gestionnaire de ashx pour le gestionnaire. Si oui, assurez-vous de tirer de IRequiresSessionState par exemple:

public class Images : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ } 

Si vous n'êtes pas en utilisant un ashx pouvez-vous décrire ce que vous entendez par page image dynamique?

Josh

+1

Salut Josh, Tu es ma personne préférée en ce moment!:) Non J'utilisais une page aspx standard parce que tous les exemples de gestionnaires mentionnés en utilisant une extension de fichier et des changements de configuration, ne connaissaient pas du tout ashx, l'essayaient, et cela nécessitait la dérivation que vous avez mentionnée. Fonctionne parfaitement. À votre santé! – JohnC

+1

Heh awsome! J'adore les manieurs ashx. J'en ai utilisé un pour extraire des images d'une base de données qui fonctionne très bien. J'ai également constaté que si vous faites un service POX que l'ashx fonctionne très bien. – JoshBerke

3

La session n'a rien à voir avec le fait d'être connecté ou non.

De quel événement substituez-vous l'accès à la session? La session n'est pas disponible jusqu'à ce que AcquireRequestState ait été renvoyé.

Pour plus d'informations, voir: http://msdn.microsoft.com/en-us/library/9ysfzy8h.aspx

+1

Session a tout à voir avec mon principe de gestion personnalisé. Le problème réside dans le fait que cette session est nulle seulement pour cette page, les 50 autres utilisateurs de cette grande application ne présentent pas ce problème. J'accède à Session depuis Application_PostAuthenticateRequest où ce n'est normalement pas un problème. – JohnC

+1

Dans l'intérêt de ce problème, il suffit d'ignorer toute la partie principale de l'entreprise, le problème fondamental est que Session est null uniquement pour ce type de page. – JohnC

+0

Jon quel type de page est-ce? Est-ce un aspx? ou ashx? – JoshBerke

0

oui vous avez raison Cela arrive parce que les objets confits pourrait, dans de dépendance cas d'autres pages transferance parallèle qui peut se décomposer le pare-feu entre les sessions

8

dans Global.asax.cs Session_Start() et Session_End() vous devez utiliser "this.Session" !! La raison en est que HttpContext n'est disponible que lorsqu'une requête est en cours de traitement. C'est pourquoi vous obtenez une valeur NULL sur HttpContext.Current.Session!

Depuis le site Web de Microsoft: "HttpContext Class: Encapsule toutes les informations spécifiques à HTTP concernant une requête HTTP individuelle."

Mais ne vous sentez pas mal ... je suis tombé pour celui-ci aussi! :)

Questions connexes