You are on page 1of 8

9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.

NET Developer Should Know | DotNetCurry

Unknown date DotNetCurry.com

HTTP Request Lifecycle Events in


IIS Pipeline that every ASP.NET
Developer Should Know

The life cycle of an ASP.NET application starts with a


request sent by a browser to the Web server like IIS. If you
are an ASP.NET developer who creates modules and
handlers, it’s important to understand the the HTTP
Request Lifecycle in IIS. This article will give you an
overview of the order of events red only  in the 'Request
Life Cycle' in IIS pipeline.

Note: In IIS 6.0, there are two request processing pipelines


– one for native-code ISAPI lters and the other for
managed applications like ASP.NET. However in IIS 7.0,
there is one uni ed request processing pipeline for all
requests. The ASP.NET runtime is integrated with the Web
server. Also note that if IIS 7 is con gured to work in
Classic mode instead of Integrated mode, then it behaves
like IIS 6.

https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 1/8
9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know | DotNetCurry

 Are you a developer who loves reading .NET/JavaScript


magazines? Subscribe for Free.

When a request is made to IIS, it is queued in the


application pool of the application. An application pool is a
group of one or more URLs that are served by a worker
process. The worker process(w3wp.exe) is responsible to
forward the request to the application.

The request is processed by the HttpApplication pipeline


and events are red in the following order:

BeginRequest - The BeginRequest event signals the


creation of any given new request. This event is always
raised and is always the rst event to occur during the
processing of a request.

AuthenticateRequest - The AuthenticateRequest event


signals that the con gured authentication mechanism has
authenticated the current request. Subscribing to the
AuthenticateRequest event ensures that the request will be
authenticated before processing the attached module or
event handle.

https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 2/8
9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know | DotNetCurry

PostAuthenticateRequest - The PostAuthenticateRequest


event is raised after the AuthenticateRequest event has
occurred. All the information available is accessible in the
HttpContext’s User property.

AuthorizeRequest - The AuthorizeRequest event signals


that ASP.NET has authorized the current request. You can
subscribe to the AuthorizeRequest event to perform
custom authorization.

PostAuthorizeRequest - Occurs when the user for the


current request has been authorized.

ResolveRequestCache - Occurs when ASP.NET nishes an


authorization event to let the caching modules serve
requests from the cache, bypassing execution of the event
handler and calling any EndRequest handlers.

PostResolveRequestCache – Reaching this event means


the request can’t be served from the cache, and thus a
HTTP handler is created here. A Page class gets created if
an aspx page is requested.
https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 3/8
9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know | DotNetCurry

MapRequestHandler - The MapRequestHandler event is


used by the ASP.NET infrastructure to determine the
request handler for the current request based on the le-
name extension of the requested resource.

PostMapRequestHandler - Occurs when ASP.NET has


mapped the current request to the appropriate HTTP
handler

AcquireRequestState - Occurs when ASP.NET acquires the


current state (for example, session state) that is associated
with the current request. A valid session ID must exist.

PostAcquireRequestState - Occurs when the state


information (for example, session state or application
state) that is associated with the current request has been
obtained.

https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 4/8
9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know | DotNetCurry

PreRequestHandlerExecute - Occurs just before ASP.NET


starts executing an event handler

ExecuteRequestHandler – Occurs when handler generates


output. This is the only event not exposed by the
HTTPApplication class.

PostRequestHandlerExecute - Occurs when the ASP.NET


event handler has nished generating the output

ReleaseRequestState - Occurs after ASP.NET nishes


executing all request event handlers. This event signal
ASP.NET state modules to save the current request state.

PostReleaseRequestState - Occurs when ASP.NET has


completed executing all request event handlers and the
request state data has been persisted.

UpdateRequestCache - Occurs when ASP.NET nishes


executing an event handler in order to let caching modules
https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 5/8
9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know | DotNetCurry

store responses that will be reused to serve identical


requests from the cache.

PostUpdateRequestCache - When
thePostUpdateRequestCache is raised, ASP.NET has
completed processing code and the content of the cache is
nalized.

LogRequest - Occurs just before ASP.NET performs any


logging for the current request. The LogRequest event is
raised even if an error occurs. You can provide an event
handler for the LogRequest event to provide custom
logging for the request.

PostLogRequest - Occurs when request has been logged

EndRequest - Occurs as the last event in the HTTP pipeline


chain of execution when ASP.NET responds to a request. In
this event, you can compress or encrypt the response.

https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 6/8
9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know | DotNetCurry

PreSendRequestHeaders – Fired after EndRequest if


bu ering is turned on (by default). Occurs just before
ASP.NET sends HTTP headers to the client.

PreSendRequestContent - Occurs just before ASP.NET


sends content to the client.

I hope this post helped you understand how the


HttpApplication pipeline ows. Armed with this
knowledge, you will know which events to trap to perform 
tasks at the right time of the event lifecycle.

I hope you liked this article and I thank you for viewing it.

What Others Are Reading!


ASP.NET Web API, RestSharp and Model Error Messages

Broadcast Real-Time Noti cations using SignalR,


KnockoutJS and SqlTableDependency

ASP.NET Web API: Passing Multiple Objects as an Input


Parameters to Action Method

Explain HTTP Handlers and HTTP Modules - Interview


Question
https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 7/8
9/7/2018 HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know | DotNetCurry

ASP.NET Application and Page Life Cycle Overview -


Interview Question

ASP.NET Core 1.0: Using Docker Containers for


Deployment

Most advanced 2D & 3D Charts for .NET, WPF and


WinForms. Free Trial.
Was this article worth reading? Share it with fellow
developers too. Thanks!

Viewed using Just Read

https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet 8/8

You might also like