Hmmm. The technique is not working (might be the translation to vb.net: here's what I have:
Public Class SitesHttpModule
Implements IHttpModule
'Lots of code not relevant to this discussion
Private Sub Application_PostAcquireRequestState(ByVal sender As Object, ByVal e As System.EventArgs) Handles Application.PostAcquireRequestState
Dim objContext As HttpContext = HttpContext.Current
Dim resourceHttpHandler As ForceSessionLoadHandler = TryCast(objContext.Handler, ForceSessionLoadHandler)
If Not (resourceHttpHandler Is Nothing) Then
objContext.Handler = resourceHttpHandler._OriginalHandler
End If
End Sub
Private Sub Application_PostMapRequestHandler(sender As Object, e As System.EventArgs) Handles Application.PostMapRequestHandler
Dim app As HttpApplication = CType(sender, HttpApplication)
Dim objIROSS As IReadOnlySessionState = TryCast(app.Context.Handler, IReadOnlySessionState)
Dim objIRSS As IRequiresSessionState = TryCast(app.Context.Handler, IRequiresSessionState)
If ((Not (objIROSS Is Nothing)) Or (Not (objIRSS Is Nothing))) Then
Exit Sub
End If
app.Context.Handler = New ForceSessionLoadHandler(app.Context.Handler)
End Sub
Private Sub Application_PreRequestHandlerExecute(ByVal sender As Object, ByVal e As System.EventArgs) Handles Application.PreRequestHandlerExecute
Dim objContext As HttpContext = HttpContext.Current
'Code that attepmpts to access the session -- It's "Nothing" here
End Class
Public Class ForceSessionLoadHandler
Implements IHttpHandler, IRequiresSessionState
Friend ReadOnly _OriginalHandler As IHttpHandler
Public Sub New(ByRef originalHandler As IHttpHandler)
_OriginalHandler = originalHandler
End Sub
Public ReadOnly Property IsReusable As Boolean Implements System.Web.IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Public Sub ProcessRequest(context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
Throw New InvalidOperationException("ForceSessionLoadHandler cannot process requests.")
End Sub
End Class
ojm37
Contributor
2248 Points
832 Posts
Re: Creating a Session Variable in an httpModule: NullReferenceException
Jun 02, 2011 09:21 PM|LINK
Hmmm. The technique is not working (might be the translation to vb.net: here's what I have:
Public Class SitesHttpModule Implements IHttpModule 'Lots of code not relevant to this discussion Private Sub Application_PostAcquireRequestState(ByVal sender As Object, ByVal e As System.EventArgs) Handles Application.PostAcquireRequestState Dim objContext As HttpContext = HttpContext.Current Dim resourceHttpHandler As ForceSessionLoadHandler = TryCast(objContext.Handler, ForceSessionLoadHandler) If Not (resourceHttpHandler Is Nothing) Then objContext.Handler = resourceHttpHandler._OriginalHandler End If End Sub Private Sub Application_PostMapRequestHandler(sender As Object, e As System.EventArgs) Handles Application.PostMapRequestHandler Dim app As HttpApplication = CType(sender, HttpApplication) Dim objIROSS As IReadOnlySessionState = TryCast(app.Context.Handler, IReadOnlySessionState) Dim objIRSS As IRequiresSessionState = TryCast(app.Context.Handler, IRequiresSessionState) If ((Not (objIROSS Is Nothing)) Or (Not (objIRSS Is Nothing))) Then Exit Sub End If app.Context.Handler = New ForceSessionLoadHandler(app.Context.Handler) End Sub Private Sub Application_PreRequestHandlerExecute(ByVal sender As Object, ByVal e As System.EventArgs) Handles Application.PreRequestHandlerExecute Dim objContext As HttpContext = HttpContext.Current 'Code that attepmpts to access the session -- It's "Nothing" here End Class Public Class ForceSessionLoadHandler Implements IHttpHandler, IRequiresSessionState Friend ReadOnly _OriginalHandler As IHttpHandler Public Sub New(ByRef originalHandler As IHttpHandler) _OriginalHandler = originalHandler End Sub Public ReadOnly Property IsReusable As Boolean Implements System.Web.IHttpHandler.IsReusable Get Return False End Get End Property Public Sub ProcessRequest(context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest Throw New InvalidOperationException("ForceSessionLoadHandler cannot process requests.") End Sub End Class