2009-08-06 13 views
7

Cel: Mam miniaturę jako tablicę bajtów w pamięci. Gdy użytkownik prześle swój obraz, chcę go wyświetlić w serwisie httphandler przed zapisaniem go w bazie danych. Użyłem tego kodu, aby z powodzeniem odczytać go i wyświetlić z bazy danych. Ale teraz chcę, aby wyświetlić go z sesji:Jak używać zmiennej Session w 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 

Odpowiedz

15

Należy zaznaczyć swoją klasę z IRequiresSessionState interfejsu (System.Web.SessionState nazw). Nie ma żadnych metod ani właściwości, więc nie powinieneś zmieniać niczego w swoim kodzie.

Podpis byłoby:

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

Dziękuję Thorarin. Implementuję IRequiresSessionState, ale nadal nie można zobaczyć zmiennej Session. Otrzymuję komunikat "Nazwa" Sesja nie jest zadeklarowana –

+0

Zaktualizowałam przykład demonstrujący użycie sesji +1 do Jacka :) – Thorarin

1

Thorarin była prawidłowa. Musiałem wdrożyć IRequiresSessionState. Co nie zdawałem sobie sprawy, że potem musiałem odwołać się do zmiennej jako

context.Session("oUser") 

zamiast

Session("oUser")