2013-01-06 16 views
32

Ho visto alcune domande (Here e Here) ma non rispondono alla mia domanda. Sto provando a chiamare Ajax usando il file "ajax.ashx" e in funzione per accedere a Session. Per qualche ragione, il valore dell'oggetto Session stesso è nullo.HttpContext.Current.Session è null nel file Ashx

Uso esempio:

Session = HttpContext.Current.Session // This is null 

Oppure:

public virtual void ProcessRequest(HttpContext context) 
{ 
    System.Web.SessionState.HttpSessionState Session = context.Session; 
    // This is null 
} 

nel web.config:

<sessionState timeout="1800"></sessionState> 
+0

Possibile duplicato di http://stackoverflow.com/questions/2156524/asp-net-session-is-null-in-ashx-file, ma questo ha anche una buona risposta e commenti. – goodeye

risposta

70

è necessario aggiungere sul tuo gestore del IRequiresSessionState sulla dichiarazione di esso come :

public class YourHandleName : IHttpHandler, IRequiresSessionState 
{ 
... 

per impostazione predefinita i gestori non sono connessi alla sessione per mantenerli minimi, aggiungendo il numero IRequiresSessionState a cui li si collega con la sessione.

+0

Si noti che anche questo può essere ereditato, se tutte le classi .ASHX.CS ereditano dalla stessa classe e quella classe ha l'interfaccia IRequiresSessionState che sarà anche in grado di accedere alla sessione corrente in ogni gestore. –

+2

@StevendeSalas Ok, ma per tua conoscenza, è meglio evitare la sessione se possibile, e soprattutto i gestori, perché la pagina o il gestore che richiede la sessione è bloccare l'intera chiamata fino a quando termina http://stackoverflow.com/ domande/11629600/does-asp-net-web-forms-prevent-a-doppio-click-submission/11629664 # 11629664 – Aristos

+0

Cool grazie per informazioni, sempre qualcosa di nuovo da imparare –

Problemi correlati