asp.net中global.asax的用途是什么


Answers:


119

MSDN概述了global.asax文件的用途。

实际上,global.asax允许您编写响应“系统级”事件而运行的代码,例如应用程序启动,会话结束,应用程序错误的发生,而无需尝试将代码累赘您网站的页面。

您可以通过在Visual Studio中选择“添加”>“新建项”>“全局应用程序类”来使用它。添加文件后,可以在列出的任何事件下添加代码(至少在Visual Studio 2008中是默认创建的):

  • Application_Start
  • Application_End
  • 会话开始
  • 会话结束
  • Application_BeginRequest
  • Application_AuthenticateRequest
  • 应用程序错误

您还可以加入其他事件,例如“ LogRequest”。


2
global.asax的条目已从Wikipedia中删除。
凯西·沙利文

我们可以为Windows窗体添加global.asax文件吗?
Jeeva Jsb

@JeevaJsb,不。global.asax的内容(通常)是由IIS / ASP.net应用程序生命周期触发的事件,因此不会触发WinForms应用程序中的代码。

我想知道为什么他们不能只有从HttpApplication类继承的代码而不需要asax文件。该的global.asax.cs包含了所有的东西,所以为什么需要一个特定的ASAX文件只包含这个<%@应用的Codebehind =“Global.asax.cs中”继承=“XXXXX” LANGUAGE =“C#”%>
简单研究员

67

全球Asax事件解释

Application_Init:在应用程序初始化或首次调用时触发。所有HttpApplication对象实例都会调用它。

Application_Disposed:在销毁应用程序之前触发。这是清理以前使用的资源的理想位置。

Application_Error:在应用程序中遇到未处理的异常时触发。

Application_Start:在创建HttpApplication类的第一个实例时触发。它允许您创建所有HttpApplication实例均可访问的对象。

Application_End:当HttpApplication类的最后一个实例被销毁时触发。在应用程序的生存期内,它仅触发一次。

Application_BeginRequest:在收到应用程序请求时触发。这是为请求触发的第一个事件,通常是用户输入的页面请求(URL)。

Application_EndRequest:为应用程序请求触发的最后一个事件。

Application_PreRequestHandlerExecute:在ASP.NET页面框架开始执行事件处理程序(如页面或Web服务)之前触发。

Application_PostRequestHandlerExecute:当ASP.NET页面框架执行完事件处理程序时触发。

Applcation_PreSendRequestHeaders:在ASP.NET页框架将HTTP标头发送到发出请求的客户端(浏览器)之前触发。

Application_PreSendContent:在ASP.NET页面框架将内容发送到发出请求的客户端(浏览器)之前触发。

Application_AcquireRequestState:当ASP.NET页面框架获取与当前请求相关的当前状态(会话状态)时,将触发此事件。

Application_ReleaseRequestState:当ASP.NET页框架完成所有事件处理程序的执行时触发。这导致所有状态模块保存其当前状态数据。

Application_ResolveRequestCache:当ASP.NET页面框架完成授权请求时触发。它允许缓存模块处理来自缓存的请求,从而绕过处理程序执行。

Application_UpdateRequestCache:当ASP.NET页面框架完成处理程序执行以允许缓存模块存储用于处理后续请求的响应时,将触发此事件。

Application_AuthenticateRequest:在安全模块已将当前用户的身份确定为有效时触发。至此,用户的凭证已经通过验证。

Application_AuthorizeRequest:在安全模块已验证用户可以访问资源时触发。

Session_Start:当新用户访问应用程序网站时触发。

Session_End:当用户的会话超时,结束或离开应用程序网站时触发。



6

Global.asax是asp.net应用程序文件。

它是一个可选文件,用于处理ASP.NET或HttpModules引发的事件。通常用于应用程序和会话的开始/结束事件以及全局错误处理。

使用时,它应位于网站的根目录中。


3

Web应用程序的根目录具有特殊的意义,并且该文件夹中可以包含某些内容。它可以有一个称为“ Global.asax”的特殊文件。ASP.Net框架使用global.asax中的内容,并在运行时创建一个从HttpApplication继承的类。在应用程序的生命周期内,ASP.NET维护一个Global.asax派生的HttpApplication实例池。当应用程序收到http请求时,ASP.Net页面框架将分配这些实例之一来处理该请求。该实例负责管理分配给它的请求的整个生命周期,并且只有在请求返回池中之后,该实例才能完成。Global.asax中的实例成员不能用于跨请求共享数据,而静态成员可以。全球。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.