Come posso attivare Avvio di Sessione (Globale.asax) Evento per un WebHandler Richiesta?

Ho un Webhandler che genera un’immagine, su richiesta, nella mia asp.net Progetto. Ma se l’utente di accedere direttamente alla risorsa, non innescare l’inizio della sessione di Evento Globale.asax file. Ma nel mio progetto ho bisogno di innescare l’inizio della sessione di evento. Come posso realizzare questo?

 void Session_Start(object sender, EventArgs e) 
    {
        Session["Test"] = 1;

    }

 

2 Replies
  1. 7

    Il Session_Start evento è trigerred ogni volta che qualche lato server del gestore di tentativi di lettura o scrittura per la sessione. Si potrebbe provare a decorare il vostro gestore con il IRequiresSessionState marcatore interfaccia:

    public class MyHandler: IHttpHandler, IRequiresSessionState
    {
        ...
    }
    • Utilizzando System.Web.SessionState. Giusto?
    • Sì, a destra, come mostrato nella documentazione.
    • Mi permetta di chiederle qualcosa di più? A volte un’altra Domanda? Cosa devo fare se voglio usare la sessione in WebHandler, ma non voglio innescare l’Avvio di Sessione?
    • Questo è assolutamente impossibile. Non è possibile utilizzare qualsiasi sessione senza il Session_Start evento attivato. Che è esattamente ciò che questo evento è stato progettato per: essere attivato prima che lato server del gestore tenta di accedere alla sessione.
    • Voglio caricare le immagini solo per gli utenti che hanno visitato il mio sito. Voglio evitare che l’immagine condivisa su altri siti web. Non per proteggere la mia app, ma per evitare indesiderati risorsa sopraelevazione
    • +1. @SubinJacob, si dovrebbe pensare attentamente le vostre esigenze e chiedere apposita domanda… sembra Che il “mettere le immagini su CDN” poteva buona opzione per evitare l’utilizzo di risorse sul server…
    • Ma ho bisogno di una risposta per questa domanda. Come posso disattivare webhandlers per le richieste fuori dal mio sito? @AlexeiLevenkov
    • Posso sapere il gestore che ha innescato l’inizio della sessione di evento

  2. 3

    Si può sempre fare un metodo di Session_Start e chiamare

    namespace WebFormsApplication1
    {
        public class Global : HttpApplication
        {
            void Session_Start(object sender, EventArgs e) 
            {
                Global.StartSession();
            }
        }
    
        public static class Global 
        {
            public static void StartSession() {
    
                Session["Test"] = 1;
            }
        }
    }

    e del Gestore, è sufficiente chiamare Global.StartSession();

    • Posso usare la sessione in WebHandler senza l’attivazione di inizio della sessione di evento?

Lascia un commento