Récemment, j'ai besoin de créer une interface qui répond à des demandes spécifiques. Elle n'est traitée qu'en interne et il n'y a pas d'interface utilisateur. Dans ce cas, bien sûr, IHttpHandler est utilisé pour implémenter IHttpHandler, ce qui peut réduire le temps de chargement des contrôles HTML. Au départ, je le pensais. Concernant les deux méthodes définies dans IHttpHandler, ProcessRequest(HttpContext ctx) et IsRunable(), j'ai vu qu'il y avait un paramètre d'entrée de HttpContext dans ProcessRequest(HttpContext ctx). objets serveur, mais nécessite une référence à HttpContext devant. Mais un problème survient. La session doit être écrite dans cet en-tête de traitement de réponse HTTP personnalisé. D'autres requêtes et réponses peuvent être référencées à l'aide de HttpContext, mais la session ne fonctionne tout simplement pas. Il y a toujours une erreur indiquant que l'objet n'est pas référencé. vraiment une centaine C'est déroutant. Le HTTPCONTEXT répertorie les objets serveur qui peuvent être utilisés, mais SESSION ne peut pas être utilisé ! C'est vraiment difficile, je dois donc mettre le contenu du HTTPHANDLER personnalisé dans le WEBFORM ordinaire. Juste après l'avoir terminé, j'ai accidentellement découvert la méthode d'utilisation de SESSION dans le HTTPHANDLER personnalisé !
1. Faites d’abord référence à l’espace de noms System.Web.SessionState.
2. Si vous souhaitez lire le contenu de Session dans HttpHandler, vous devez également implémenter l'interface IReadOnlySessionState dans la classe qui implémente IHttpHandler.
3. Si vous souhaitez lire et écrire le contenu de Session dans HttpHandler, vous devez également implémenter IRequiresSessionState dans la classe qui implémente IHttpHandler,
afin que Session puisse être utilisée normalement dans le HttpHandler personnalisé.