I just wanted to write this down somewhere to keep it in mind but it may be useful for others to. protected void Application_Start(Object sender, EventArgs e) { //Application //Request } protected void Session_Start(Object sender, EventArgs e) { //Application //Request //User //Session //Response } protected void Application_BeginRequest(Object sender, EventArgs e) { //Application //Request //Response* } protected void Application_PreSendRequestHeaders(Object sender, EventArgs e) { //Application //Request //User //Session //Response } protected void Application_AuthenticateRequest(Object sender, EventArgs e) { //Application //Request //User //Response* } protected void Application_PostRequestHandlerExecute(Object sender, EventArgs e) { //Application //Request //User //Session //Response* } protected void Application_EndRequest(Object sender, EventArgs e) { //Application //Request //User //Response* } protected void Session_End(Object sender, EventArgs e) { //Application //Request //User //Session //Response } protected void Application_Error(Object sender, EventArgs e) { //Application //Request //User //Session //Response } protected void Global_Error(Object sender, EventArgs e) { //Application //Request //User //Session //Response } protected void Application_End(Object sender, EventArgs e) { //Application //Request //User //Session //Response }* Produces output