2012-03-10 5 views
5

Ho il seguente gestore semplice (rimosso del codice per vissibilty sake, ma non riesce ancora sotto)Session gestore generica?

<%@ WebHandler Language="C#" Class="DownloadHandler" %> 
using System; 
using System.Web; 

public class DownloadHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     if (context.Session["t1"] != "true") 
     { 

     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

La linea if (context.Session["t1"] != "true") sta fallendo con "Oggetto non impostato a un'istanza di un oggetto." e non capisco perché sia ​​così?

+0

Quale oggetto è 'null'? È 'context' o' context.Session'? – svick

+2

Sorry - trovato la risposta alla mia domanda. 'IRequiresSessionState' deve essere aggiunto (come' public class DownloadHandler: IHttpHandler, IRequiresSessionState') – brother

risposta

11

Ecco perché per il gestore HTTP per accedere a Session è necessario implementare esplicitamente l'interfaccia IRequiresSessionState.

Tenete presente che se si fa che ci sarà un blocco implicita sull'oggetto sessione e non sarà in grado di avere più gestori nello stesso stato della sessione elaborati contemporaneamente.

Esiste un'interfaccia IReadOnlySessionState nonché per l'accesso lo stato della sessione in sola lettura.

+0

sto affrontando lo stesso problema ho usato iRequiresSessionState nel mio codice gestore ma ancora non riesco ad accedere ai valori di sessione. le chiavi di sessione sono ancora 0. Qualcuno può dirmi su questo? –