asp.net - variable - état de session non disponible dans ce contexte




ASP.Net: Si j'ai l'ID de session, puis-je obtenir l'objet Session? (3)

Cette question est liée à celle-ci , même si je pense que j'étais un peu trop long là-bas pour vraiment obtenir une bonne réponse. Je vais rester bref.

Je travaille sur un gestionnaire Web (ashx) qui accepte un message de formulaire à partir d'une page ASPX. Lorsque le gestionnaire reçoit ce message, il doit connaître l'utilisateur connecté (User.Identity.Name) pour faire ce qu'il doit faire, mais je ne peux pas compter sur l'envoi de cookies par le navigateur.

Je sais que je peux obtenir le Session.SessionID et le placer dans un champ de formulaire masqué, mais une fois que mon gestionnaire reçoit le message de formulaire, comment puis-je utiliser ce SessionID pour déterminer l'identité de l'utilisateur connecté?

J'utilise le mode StateServer pour l'état de la session.


À moins qu'il soit nécessaire d'utiliser la session directement, vous pouvez toujours stocker toutes les informations sur l'identité de l'utilisateur connecté dans un dictionnaire ou un cache singleton et le référencer via l'ID de session stocké dans un champ masqué. Personnellement, je vois des problèmes de sécurité dans ce domaine, mais je ne vais pas les aborder. Je considérerais émettre des identités à usage unique pour ce type d'implémentation.


Dans une implémentation HttpHandler ou HttpModule, vous ne pouvez pas toujours accéder à la session à partir de l'événement BeginRequest. Il existe un autre événement que vous pouvez gérer, appelé OnAcquireRequestState. Si vous écrivez votre code dans cet événement, alors HttpContext.Current.Session ne sera pas nul.






session