HTTP Requests in ASP.NET

In ASP.NET to process requests a pipeline model is used which consists of HTTPModules and HTTPHnadler objects. This pipeline model forms the low level framework which is used by web pages and web services. Here we will see high level overview of asp.net request processing.


In ASP.NET to process requests a pipeline model is used which consists of HTTPModules and HTTPHnadler objects. This pipeline model forms the low level framework which is used by web pages and web services. Here we will see a high level overview of asp.net request processing.

When we request a URL from a Web browser, the request is sent to the web server.  The web server maps the file extensions with the dll's that will handle the request called as ISAPI extension mappings. We can also configure the mappings in IIS.

For ASP.NET pages the extension is aspx. So when request for an ASP.NET page comes to the web server, the web server passes the request to the asp.net dll which passes the request to the worker process.The following diagram illustrates the process.  This diagram is based on the IIS 5 processing model.

HttpHndlr1.jpg

Once the request reaches the worker process it is processed by the pipeline which runs within asp.net worker process. The httpRequest is received by an instance of HTTPRuntime class which creates an instance of HTTPApplication class to process the request.

HTTPApplication class contains number of HTTPModules to which request and response are passed on its way to the HTTPHandler.
 
HTTPModules are filters that can examine and modify the contents of request and response.

The end of the pipeline is HTTPHandler which is an object of the class that implements IHTTPHandler interface.Asp.net page and web services are examples of HTTPHandlers.

HttpHndlr2.jpg

We can create our own HTTPHandlers by following the following steps

  1. Implementing the IHTTPHandler
  2. Copying the compiled dlls to the bin directory of the application
  3. Registering the handlers in the web.config.

We can register the HTTPHandlers in the web.config file by using the following web.config file element.

<httpHandlers>

            <add verb="*" path="*.Test "

               type="ClassName, AssemblyName" />

</httpHandlers>

Above verb is the method used Get Or Post .Type is the className and assembly name and path is the URL .