Как я могу использовать переменную Session в HttpHandler - PullRequest
7 голосов
/ 06 августа 2009

Цель: у меня есть миниатюра в виде байтового массива в памяти.Как только пользователь загрузит свое изображение, я хочу отобразить его в 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

Ответы [ 2 ]

15 голосов
/ 06 августа 2009

Вы должны пометить свой класс интерфейсом IRequiresSessionState (пространство имен System.Web.SessionState). У него нет методов или свойств, поэтому вам не нужно ничего менять в вашем коде.

Подпись будет:

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
1 голос
/ 06 августа 2009

Торарин был прав. Мне пришлось реализовать IRequiresSessionState. Я не осознавал, что мне нужно было ссылаться на переменную как

context.Session("oUser")

вместо

Session("oUser")
...