Se in ASP.Net si crea un HttpHandler personalizzato solo mediante l’implementazione dell’interfaccia IHttpHandler ci si trova di fronte ad una strana limitazione: il tuo codice HttpHandler non sarà in grado di accedere agli oggetti in Sessione, ad esempio, nel metodo ProcessRequest.
Questo è dovuto al fatto che, al fine di accedere agli oggetti in Sessione è necessario implementare un’altra interfaccia: System.Web.SessionState.IRequiresSessionState.
Questa ulteriore interfaccia funge solo da un marcatore di interfaccia e non impone di aggiungere ulteriori metodi alla vostra classe; ‘dice’ solo al runtime di ASP.NET che è necessario per accedere alla Sessione.
Ecco il codice snippet:
public class MyCustomHTTPHandler: IHttpHandler, IReadOnlySessionState { public bool IsReusable { get{return (false);} } public void ProcessRequest(System.Web.HttpContext context) { if (context.Session == null) { context.Response.ContentType = "text/plain"; context.Response.Write("Impossibile recuperare i dati da Sessione."); } else { context.Response.ContentType = "text/plain"; context.Response.Write(context.Session["MY_SESSION_PARAM_STRING"].ToString()); } } }
No comments yet.
Leave a comment