Question:
How do I create a HttpModule in asp.net ?How do I get access to the Session in a HttpModule ?
Do you have a simple sample of a HttpModule in dot.net ?
Answer:
A HttpModule intercepts all requests to the asp.net application (not only pages).That allows you for example to filter requests and check permissions.
You can subscribe to a variety of events of the application object.
If you want to access the Session property of the application in your event handler method you must subscribe to AcquireRequestState or later !
To create a HttpModule follow these steps:
- Create a class that implements IHttpModule
- Subscribe to some events.
- Register module in the web.config
A very simple HttpModule
public class SimpleModule : IHttpModule { void IHttpModule.Init(HttpApplication application) { application.BeginRequest += new System.EventHandler(BeginRequest); application.AcquireRequestState += new EventHandler(application_AcquireRequestState); } public void BeginRequest(object sender, EventArgs e) { // no session here but you could filter urls etc. } void application_AcquireRequestState(object sender, EventArgs e) { // We need the session, thus BeginRequest is too early HttpApplication app = sender as HttpApplication; app.Session.Add("Message", "hello module"); // you could test whether this is a page request like this bool isPageRequest = app.Context.Request.RawUrl.Contains(".aspx"); } public void Dispose() { } }
Register your HttpModule (for IIS 7)
1 comment:
I copied the code and add specified XML in the web.config.... but AcquireRequestState event is firing. is there anu thing else u did to run this code.
I am using dotnet framework 3.5 and windows 7.
Post a Comment