【问题标题】:What is the purpose of global.asax in asp.netASP.NET 中 global.asax 的目的是什么
【发布时间】:2010-02-26 09:30:56
【问题描述】:

我们如何在asp.net 中使用global.asax?那是什么?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    MSDN has an outline global.asax 文件的用途。

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

    您可以通过在 Visual Studio 中选择 Add > New Item > Global Application Class 来使用它。添加文件后,您可以在列出的任何事件下添加代码(默认情况下,至少在 Visual Studio 2008 中创建):

    • Application_Start
    • Application_End
    • Session_Start
    • Session_End
    • Application_BeginRequest
    • Application_AuthenticateRequest
    • Application_Error

    您还可以挂钩其他事件,例如“LogRequest”。

    【讨论】:

    • global.asax 的条目已从维基百科中删除。
    • 我们可以为 windows 窗体添加 global.asax 文件吗?
    • @JeevaJsb,没有。 global.asax 的内容(通常)是由 IIS/ASP.net 应用程序生命周期触发的事件,因此不会触发 WinForms 应用程序中的代码。
    • 我想知道为什么他们不能只拥有从 HttpApplication 类继承的代码而不需要 asax 文件。 global.asax.cs 包含所有的东西,所以为什么需要一个只包含这个 跨度>
    【解决方案2】:

    全球 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:当用户的会话超时、结束或离开应用程序网站时触发。

    【讨论】:

    • 还有 Application_Dispose ......我相信它与每个 Application Init 相关......它经常被称为仙女。而 Application_End 只被调用一次,所以我认为 Application_End 是最好的处理位置DI 容器等docs.microsoft.com/en-us/previous-versions/…
    • 可悲的是,如果您使用 VS2019 IIS Express (.NET Framework 4.7.2),它似乎在您停止调试时不会调用 Application_End。如果你在 IIS 中运行你的应用程序,你会发现它确实如此。
    【解决方案3】:

    Global.asax 文件,也称为 ASP.NET 应用程序文件是一个 包含代码的可选文件 响应应用程序级和 ASP.NET 引发的会话级事件 或通过 HTTP 模块。

    http://msdn.microsoft.com/en-us/library/2027ewzw.aspx

    【讨论】:

      【解决方案4】:

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

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

      使用时,应该在网站的根目录下。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          Global.asax 可用于处理来自应用程序的事件。这个链接提供了一个很好的解释:http://aspalliance.com/1114

          【讨论】:

            猜你喜欢
            • 2016-10-12
            • 1970-01-01
            • 1970-01-01
            • 2012-07-27
            • 1970-01-01
            • 2023-03-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多