Любое приложение ASP.NET - это объект (или класс) типа:
public class Global : System.Web.HttpApplication
( вы найдете это в global.asax )
Вызов ядра ASP.NET IIS создает экземпляр вашего объекта, а интерфейс HttpApplication требует Application_BeginRequest, который вызывается IIS (посредством ISAPI)
Когда ASP.NETДвижок создает экземпляр вашего класса, он выглядит следующим образом:
HttpApplication thisAspApp = new YourASPApplication()
thisApplication.Begin_Request()
Поскольку приложение преобразуется в производный тип, к известному интерфейсу можно получить прямой доступ без необходимости переопределений.Хотя HttpApplication является классом, он используется в качестве интерфейса для приведения типов.Если вы добавите новый метод (или свойство) в свой класс, механизм ASP.NET не сможет получить доступ к этому методу, потому что он знает о вашем приложении только как об общем приложении HttpApplication.В VS, если вы идете в global.asax и щелкаете правой кнопкой мыши по HttpApplication в объявлении класса и выбираете «Перейти к определению» (или нажимаете F12), вы можете увидеть структуру базового класса.(или вы можете найти его в MSDN онлайн).