2010-06-26 8 views
0

Je construis sur l'exemple trouvé ici:Accéder aux données de session à partir de RouteHandler personnalisé?

http://www.mikesdotnetting.com/Article/126/ASP.NET-MVC-Prevent-Image-Leeching-with-a-Custom-RouteHandler

Ce que je voudrais faire est maintenant avoir une certaine logique qui vérifie certaines données en séance avant de permettre à l'image valide à afficher. Est-il possible d'accéder aux données de session à partir du routage personnalisé RouteHandler ou de tout autre type de données persistantes?

Répondre

1

Vous avez accès à la session depuis le RequestContext:

private static void ProcessRequest(RequestContext requestContext) 
{ 
    var session = requestContext.HttpContext.Session; 
+0

Je recevais null. Hmm. Je vais essayer de nouveau. Merci. –

+0

Est-ce que cela fonctionne uniquement dans MVC? Ma session sort toujours comme nulle ... – Shagglez

+0

Cette approche a-t-elle fonctionné? Je reçois toujours une valeur nulle lorsque j'essaie d'accéder à partir d'un gestionnaire d'itinéraire personnalisé. – Macros

1

J'ai publié solution for this problem en réponse à une autre question.

regard sur la vue d'ensemble du cycle de vie de l'application (https://msdn.microsoft.com/en-us/library/bb470252(v=vs.140).aspx), particulièrement la ligne La requête est traitée par le pipeline HttpApplication. dans le tableau Étapes du cycle de vie.

Alors que la fonction GetHttpHandler de votre objet IRouteHandler est invoqué dans la phase de 10 (Déclenchez l'événement MapRequestHandler.) Du pipe-line, Session est rétablie dans la phase 12 (Déclenchez l'événement AcquireRequestState.). C'est pourquoi vous ne pouvez pas accéder aux variables de session au cours de la fonction GetHttpHandler et RequestContext.HttpContext.Session est toujours null.

Questions connexes