Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Catching Session start in HTTPModules

Reply
Thread Tools

Catching Session start in HTTPModules

 
 
DamienS
Guest
Posts: n/a
 
      07-01-2008
Hi,

I'm trying to get away from using global.asax for reasons of
'neatness'.

Am I able to register a HTTPModule that captures the starting of a
user session? Isn't Session_Start an event in global.asax? ... and
isn't global.asax exposing events of HttpApplication?

What am I missing?

Thanks in advance,


Damien



public class clsSessionManager : IHttpModule
{
#region IHttpModule Members

void IHttpModule.Dispose()
{
}

void IHttpModule.Init(HttpApplication context)
{
// I would have thought that I could use
context.SessionStart+= here....
}

#endregion
}
 
Reply With Quote
 
 
 
 
Peter Bromberg [C# MVP]
Guest
Posts: n/a
 
      07-01-2008
I put all kinds of code , static methods and fields in Global.asax and it is
very neat (at least to me).
You can use Session in an HttpModule by implementing the marker interface
IRequiresSessionState.
Peter
"DamienS" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi,
>
> I'm trying to get away from using global.asax for reasons of
> 'neatness'.
>
> Am I able to register a HTTPModule that captures the starting of a
> user session? Isn't Session_Start an event in global.asax? ... and
> isn't global.asax exposing events of HttpApplication?
>
> What am I missing?
>
> Thanks in advance,
>
>
> Damien
>
>
>
> public class clsSessionManager : IHttpModule
> {
> #region IHttpModule Members
>
> void IHttpModule.Dispose()
> {
> }
>
> void IHttpModule.Init(HttpApplication context)
> {
> // I would have thought that I could use
> context.SessionStart+= here....
> }
>
> #endregion
> }


 
Reply With Quote
 
 
 
 
DamienS
Guest
Posts: n/a
 
      07-01-2008
Thanks very much Peter.

I'm having trouble finding the session_start event though. It appears
in global.asax, however I can't find any other reference to it in the
framework. I've read up on IRequiresSessionState and understand that I
can use it to see if the current context requires a session, however
what I'm trying to do is capture when a session begins. Is there any
way to do this outside of global.asax?

After digging around some more, I'm now really curious - 'where' is
the session_start event in global.asax defined? Why doesn't it appear
in the object model? I notice that there's a AcquireRequestState event
on HttpApplication described as "Occurs when ASP.NET acquires the
current state (for example, session state) that is associated with the
current request." - however, to me, this description doesn't say that
it fires when a new session is created.

Thanks in advance,


Damien




On Jul 1, 1:07*pm, "Peter Bromberg [C# MVP]"
<(E-Mail Removed)> wrote:
> I put all kinds of code , static methods and fields in Global.asax and it is
> very neat (at least to me).
> You can useSessionin an HttpModule by implementing the marker interface
> IRequiresSessionState.
> Peter"DamienS" <(E-Mail Removed)> wrote in message
>
> news:(E-Mail Removed)...
>
>
>
> > Hi,

>
> > I'm trying to get away from using global.asax for reasons of
> > 'neatness'.

>
> > Am I able to register a HTTPModule that captures the starting of a
> > usersession? Isn't Session_Start an event in global.asax? ... and
> > isn't global.asax exposing events of HttpApplication?

>
> > What am I missing?

>
> > Thanks in advance,

>
> > Damien

>
> > public class clsSessionManager : IHttpModule
> > * *{
> > * * * *#region IHttpModule Members

>
> > * * * *void IHttpModule.Dispose()
> > * * * *{
> > * * * *}

>
> > * * * *void IHttpModule.Init(HttpApplication context)
> > * * * *{
> > * * * * * // I would have thought that I could use
> > context.SessionStart+= here....
> > * * * *}

>
> > * * * *#endregion
> > * *}- Hide quoted text -

>
> - Show quoted text -


 
Reply With Quote
 
Norm
Guest
Posts: n/a
 
      07-02-2008
On Jul 1, 4:06*pm, DamienS <(E-Mail Removed)> wrote:
> Thanks very much Peter.
>
> I'm having trouble finding the session_start event though. It appears
> in global.asax, however I can't find any other reference to it in the
> framework. I've read up on IRequiresSessionState and understand that I
> can use it to see if the current context requires a session, however
> what I'm trying to do is capture when a session begins. Is there any
> way to do this outside of global.asax?
>
> After digging around some more, I'm now really curious - 'where' is
> the session_start event in global.asax defined? Why doesn't it appear
> in the object model? I notice that there's a AcquireRequestState event
> on HttpApplication described as "Occurs when ASP.NET acquires the
> current state (for example, session state) that is associated with the
> current request." - however, to me, this description doesn't say that
> it fires when a new session is created.
>
> Thanks in advance,
>
> Damien
>
> On Jul 1, 1:07*pm, "Peter *Bromberg [C# MVP]"
>
> <(E-Mail Removed)> wrote:
> > I put all kinds of code , static methods and fields in Global.asax and it is
> > very neat (at least to me).
> > You can useSessionin an HttpModule by implementing the marker interface
> > IRequiresSessionState.
> > Peter"DamienS" <(E-Mail Removed)> wrote in message

>
> >news:(E-Mail Removed)...

>
> > > Hi,

>
> > > I'm trying to get away from using global.asax for reasons of
> > > 'neatness'.

>
> > > Am I able to register a HTTPModule that captures the starting of a
> > > usersession? Isn't Session_Start an event in global.asax? ... and
> > > isn't global.asax exposing events of HttpApplication?

>
> > > What am I missing?

>
> > > Thanks in advance,

>
> > > Damien

>
> > > public class clsSessionManager : IHttpModule
> > > * *{
> > > * * * *#region IHttpModule Members

>
> > > * * * *void IHttpModule.Dispose()
> > > * * * *{
> > > * * * *}

>
> > > * * * *void IHttpModule.Init(HttpApplication context)
> > > * * * *{
> > > * * * * * // I would have thought that I could use
> > > context.SessionStart+= here....
> > > * * * *}

>
> > > * * * *#endregion
> > > * *}- Hide quoted text -

>
> > - Show quoted text -


Damien,
The Session is implemented via a HttpModule itself. It is registered
by default in the root web.config. It is of the type
System.Web.SessionState.SessionStateModule. That class is what exposes
the session start event. In order to bind an event handler you will
have to obtain the instance of the SessionStateModule. The
HttpApplication exposes the modules as a collection. So your code
would look something like below. (I am a VB developer so excuse syntax
etc. ) Hopefully this helps.

void IHttpModule.Init(HttpApplication context)
{
SessionStateModule sessionModule = context.modules("Session");
sessionModule.Start += here ...
}
 
Reply With Quote
 
Norm
Guest
Posts: n/a
 
      07-02-2008
On Jul 1, 6:28*pm, Norm <(E-Mail Removed)> wrote:
> On Jul 1, 4:06*pm, DamienS <(E-Mail Removed)> wrote:
>
>
>
> > Thanks very much Peter.

>
> > I'm having trouble finding the session_start event though. It appears
> > in global.asax, however I can't find any other reference to it in the
> > framework. I've read up on IRequiresSessionState and understand that I
> > can use it to see if the current context requires a session, however
> > what I'm trying to do is capture when a session begins. Is there any
> > way to do this outside of global.asax?

>
> > After digging around some more, I'm now really curious - 'where' is
> > the session_start event in global.asax defined? Why doesn't it appear
> > in the object model? I notice that there's a AcquireRequestState event
> > on HttpApplication described as "Occurs when ASP.NET acquires the
> > current state (for example, session state) that is associated with the
> > current request." - however, to me, this description doesn't say that
> > it fires when a new session is created.

>
> > Thanks in advance,

>
> > Damien

>
> > On Jul 1, 1:07*pm, "Peter *Bromberg [C# MVP]"

>
> > <(E-Mail Removed)> wrote:
> > > I put all kinds of code , static methods and fields in Global.asax and it is
> > > very neat (at least to me).
> > > You can useSessionin an HttpModule by implementing the marker interface
> > > IRequiresSessionState.
> > > Peter"DamienS" <(E-Mail Removed)> wrote in message

>
> > >news:(E-Mail Removed)....

>
> > > > Hi,

>
> > > > I'm trying to get away from using global.asax for reasons of
> > > > 'neatness'.

>
> > > > Am I able to register a HTTPModule that captures the starting of a
> > > > usersession? Isn't Session_Start an event in global.asax? ... and
> > > > isn't global.asax exposing events of HttpApplication?

>
> > > > What am I missing?

>
> > > > Thanks in advance,

>
> > > > Damien

>
> > > > public class clsSessionManager : IHttpModule
> > > > * *{
> > > > * * * *#region IHttpModule Members

>
> > > > * * * *void IHttpModule.Dispose()
> > > > * * * *{
> > > > * * * *}

>
> > > > * * * *void IHttpModule.Init(HttpApplication context)
> > > > * * * *{
> > > > * * * * * // I would have thought that I could use
> > > > context.SessionStart+= here....
> > > > * * * *}

>
> > > > * * * *#endregion
> > > > * *}- Hide quoted text -

>
> > > - Show quoted text -

>
> Damien,
> The Session is implemented via a HttpModule itself. It is registered
> by default in the root web.config. It is of the type
> System.Web.SessionState.SessionStateModule. That class is what exposes
> the session start event. In order to bind an event handler you will
> have to obtain the instance of the SessionStateModule. The
> HttpApplication exposes the modules as a collection. So your code
> would look something like below. (I am a VB developer so excuse syntax
> etc. ) Hopefully this helps.
>
> void IHttpModule.Init(HttpApplication context)
> {
> * * SessionStateModule sessionModule = context.modules("Session");
> * * sessionModule.Start += here ...
>
> }


Clarification: "Session" is the name given to the SessionStateModule
when it is registered in the root web.config.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Repost: Catching unhandled exceptions using HttpModules Amil Hanish ASP .Net 0 04-18-2006 03:32 PM
Catching unhandled exceptions using HttpModules Amil Hanish ASP .Net 0 04-12-2006 11:51 PM
HttpModules et session Aurel ASP .Net 2 11-30-2003 04:44 PM
Re: passing variables between web page events & httpmodules events Alvin Bruney ASP .Net 1 11-24-2003 04:14 PM
Virtual Paths and HttpModules Ian Turner ASP .Net 1 10-26-2003 11:22 AM



Advertisments