简体   繁体   中英

How can I use Session variable in an HttpHandler

Goal: I have a thumbnail as a byte array in memory. Once a user uploads their image, I want to display it in an httphandler before writing it to the database. I have used this code to successfully read it and display from a database. But now I want to display it from the session:

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

You should mark your class with the IRequiresSessionState interface ( System.Web.SessionState namespace). It has no methods or properties, so you shouldn't have to change anything else about your code.

The signature would be:

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

Thorarin was correct. I had to implement IRequiresSessionState. What I didn't realize was that I then had to refer to the variable as

context.Session("oUser")

instead of

Session("oUser")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM