2009-08-06 9 views
7

Obiettivo: Ho una miniatura come array di byte in memoria. Una volta che un utente carica la propria immagine, voglio visualizzarla in un httphandler prima di scriverla nel database. Ho usato questo codice per leggerlo e mostrarlo correttamente da un database. Ma ora voglio visualizzarlo dalla sessione:Come posso utilizzare la variabile Session in HttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) _ 
    Implements IHttpHandler.ProcessRequest 

    Dim oPhotoMgt As New PhotoMgt 
    Dim intPhotoID As Int32 = context.Request.QueryString("id") 
    Dim oPhoto As New Photo 
    oPhoto = oPhotoMgt.GetPhotoByID(intPhotoID) 

    context.Response.ContentType = "image/jpeg" 
    context.Response.BinaryWrite(oPhoto.Bytes.ToArray()) 
End Sub 

risposta

15

Si dovrebbe contrassegnare la classe con l'interfaccia di IRequiresSessionState (System.Web.SessionState namespace). Non ha metodi o proprietà, quindi non dovresti cambiare nulla sul tuo codice.

La firma sarebbe:

Imports System.Web 
Imports System.Web.SessionState 

Public Class MyHandler 
    Implements IHttpHandler, IRequiresSessionState 

    Public Sub ProcessRequest(ByVal context As HttpContext) _ 
     Implements IHttpHandler.ProcessRequest 

     context.Session("foo") = "bar" 
    End Sub 
End Class 
+0

Grazie Thorarin. Implemento IRequiresSessionState ma non riesco ancora a vedere la variabile Session. Sto ricevendo il messaggio "Nome 'Sessione' non dichiarato –

+0

Aggiornato l'esempio per dimostrare l'uso della sessione. +1 a Jack :) – Thorarin

1

Thorarin era corretta. Ho dovuto implementare IRequiresSessionState. Quello che non mi rendevo conto era che poi ho dovuto fare riferimento alla variabile come

context.Session("oUser") 

invece di

Session("oUser") 
Problemi correlati