При создании файла приложения ASP.NET Global.asax средствами Visual Studio, последняя автоматически генерирует там несколько знакомых событий. В каждое событие передается параметр sender типа object. Интереса ради, а может быть и для пользы дела, ниже приведены раскрытые типы параметра sender в каждом из событий:
protected void Application_Start(object sender, EventArgs e){
/* System.Web.HttpApplicationFactory */
}
protected void Session_Start(object sender, EventArgs e)
{
/* System.Web.SessionState.SessionStateModule */
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
/* System.Web.HttpApplication (или производный от него свой тип) */
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
/* System.Web.HttpApplication (или производный от него свой тип) */
}
protected void Application_Error(object sender, EventArgs e)
{
/* System.Web.HttpApplication (или производный от него свой тип) */
}
protected void Session_End(object sender, EventArgs e)
{
/* System.Web.SessionState.SessionStateModule */
}
protected void Application_End(object sender, EventArgs e)
{
/* System.Web.HttpApplicationFactory */
}
В первом и последнем событиях передается фабрика, которая создает и инициализирует экземпляр HttpApplication. Кстати, о том, как вызвать событие Application_End, читать где-то в предыдущих постах.
Здесь не все события, см. полный список.