困惑于global.asax?

时间:2010-10-12 11:58:10

标签: c# asp.net global-asax

我有一个名为Global的课程,派生自HttpApplication

奇怪的是,我在Global中看到很多方法看起来像:

void Application_Start(object sender, EventArgs e)
{
}

代码肯定是在这个方法中执行的,所以这个方法是从某个地方调用的,但是在哪里呢?这些方法没有标记过载?

其次,我从Global派生了一个班级,我们称之为GlobalFoo

同样,如果我创建一个名为Application_Start()的方法,它将在我的派生类中被调用,否则Global中的任何内容都将被调用,因此我也可能从一个空类派生。< / p>

有人可以提供任何建议吗?我错过了ASP.NET的一些基本部分吗?

3 个答案:

答案 0 :(得分:1)

  

所以这个方法是从某个地方调用的,但是在哪里呢?

从应用程序池中调用此函数(来自您已分配的每个池),以指示应用程序的启动/结束事件并帮助您进行初始化。

分配用于运行Web应用程序的每个池都运行这些功能。

asp.net 帮助您创建不同的对象/代码可以一起运行,而为什么您会看到所有已注册的代码都运行。它有助于创建不同的“启动”例程,做出不同的思考。

这个is an example,这个模块只是由他自己检查安全协议......你不需要改变你的代码,只需注册它。

答案 1 :(得分:0)

IIS通过asp.net isapi过滤器调用不同的Global.asax事件。

或许this article将有助于解释。

答案 2 :(得分:-1)

Global.asax文件是一个可选文件,用于声明和处理IIS Web服务器上运行的ASP.NET网站的应用程序和会话级事件和对象

此文件中的一些关键事件是:

  • Application_Init:第一次初始化应用程序时触发。
  • Application_Start:第一次启动应用程序时触发。
  • Session_Start:用户会话启动时第一次触发。
  • Application_BeginRequest:每次有新请求时都会触发。
  • Application_EndRequest:应用程序终止时触发。
  • Application_AuthenticateRequest:表示请求已准备好进行身份验证。
  • Application_Error:在应用程序中发生未处理的错误时触发。
  • Session_End:每当单个用户会话结束或超时时触发。
  • Application_End:应用程序结束或超时时触发(通常用于应用程序清理逻辑)。

有关Global.asax事件的完整列表,请参阅“Global.asax Events”。