J'ai un HttpHandler qui est exécuté sur une page client (interdomaine, pas sur notre IIS, etc.) et quand ils cliquent sur notre lien intégré, il déclenche le gestionnaire sur notre serveur. Donc jusqu'à présent, tout fonctionne normalement.
J'essaie maintenant d'utiliser l'objet System.Web.HttpContext.Session mais il est nul. Je pense que c'est nul parce que nous n'avons pas de session tant que notre HttpHandler n'est pas appelé? Et plusieurs appels au gestionnaire créeront une nouvelle session par appel? Si tel est le cas, MS vient-il de désactiver l'objet Session lors de l'appel à un HttpHandler? Quelqu'un peut-il confirmer cela?
Si tel est le cas, que faites-vous pour maintenir l'état entre les appels? Une sorte d'objet de données basé sur SQL? Un fichier?
TIA
Demandez à votre HttpHandler d'implémenter l'interface IRequiresSessionState. Il permettra l'utilisation de l'état de session. IRequiresSessionState peut être trouvé dans le System.Web.SessionState
espace de noms.
Je pense que vous devez implémenter l'interface vide IReadOnlySessionState , donc le contexte sera chargé.
modifier pour ajouter:
Selon la réponse de Michael Morton, vous pouvez également implémenter IRequiresSessionState , ce qui vous donnera également un accès en écriture à l'objet Session
using System;
using System.Web;
using System.Web.SessionState;
public class DownloadHandler : IHttpHandler, IReadOnlySessionState
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
context.Response.Write(context.Session["kmx"]);
}
}