2009-08-06 2 views
7

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

ответ

15

Вы должны отметить свой класс с 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 
+0

Спасибо Торарин. Я реализую IRequiresSessionState, но он все еще не может видеть переменную Session. Я получаю «Имя« Сессия »не объявляется. – 2009-08-06 19:26:34

+0

Обновлен пример демонстрации использования сеанса. +1 к Джеку :) – Thorarin

1

Торарин было правильным. Мне пришлось реализовать IRequiresSessionState. То, что я не понимал, что я тогда пришлось обратиться к переменной, как

context.Session("oUser") 

вместо

Session("oUser") 
Смежные вопросы