【问题标题】:How can I use Session variable in an HttpHandler如何在 HttpHandler 中使用 Session 变量
【发布时间】:2009-08-06 18:59:13
【问题描述】:

目标:我有一个缩略图作为内存中的字节数组。一旦用户上传了他们的图像,我想在将其写入数据库之前将其显示在 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

【问题讨论】:

    标签: .net httphandler


    【解决方案1】:

    您应该使用IRequiresSessionState 接口(@98​​7654322@ 命名空间)标记您的类。它没有方法或属性,因此您不必更改代码的任何其他内容。

    签名是:

    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
    

    【讨论】:

    • 谢谢索拉林。我实现了 IRequiresSessionState 但它仍然看不到 Session 变量。我收到“未声明名称‘会话’。
    • 更新了示例以演示会话的使用。 +1 给杰克 :)
    【解决方案2】:

    索拉林是正确的。我必须实现 IRequiresSessionState。我没有意识到的是,我不得不将变量称为

    context.Session("oUser")
    

    而不是

    Session("oUser")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多