• 如何在global.asax中执行跳转


    Global.asax文件有时被叫做ASP.NET应用程序文件, 它提供了一种方式来在一个集中的地方响应application或module等级的事件. 你可以使用这个文件来实现应用程序的安全, 还有其他的任务.

    Overview

    ============

    Global.asax文件存在于应用程序文件夹的root. 虽然Visual Studio .NET会自动地把这个文件插入到所有的新ASP.NET应用程序中, 其实这个文件是可选的, 不是一定要有的.  如果你没有在使用它的话, 你可以删掉它. .asax后缀说明他是一个应用程序文件, 而不是一个asp.net文件(aspx).

     

    我们可以配置global.asax文件, 自动地拒绝任何直接到来HTTP request, 这样, 用户就不能下载或查看它的内容. ASP.NET页面架构会自动地识别任何对global.asax的修改. ASP.NET框架会重启应用程序, 其中包括关掉所有的浏览器的session, 冲掉所有的state信息, 重启application domain.

     

    Programming

    ============

    The Global.asax file, which is derived from the HttpApplication class, maintains a pool of HttpApplication objects, and assigns them to applications as needed. The Global.asax file contains the following events:

    global.asax文件, 继承自HttpApplication类, 维护着一个HttpApplication对象的池, 它会把HttpApplication对象在需要的时候赋给应用程序. Global.asax文件包括的事件如下:

    • Application_Init: Fired when an application initializes or is first called. It's invoked for all HttpApplication object instances.
    • Application_Disposed: Fired just before an application is destroyed. This is the ideal location for cleaning up previously used resources.
    • Application_Error: Fired when an unhandled exception is encountered within the application.
    • Application_Start: Fired when the first instance of the HttpApplication class is created. It allows you to create objects that are accessible by all HttpApplication instances.
    • Application_End: Fired when the last instance of an HttpApplication class is destroyed. It's fired only once during an application's lifetime.
    • Application_BeginRequest: Fired when an application request is received. It's the first event fired for a request, which is often a page request (URL) that a user enters.
    • Application_EndRequest: The last event fired for an application request.
    • Application_PreRequestHandlerExecute: Fired before the ASP.NET page framework begins executing an event handler like a page or Web service.
    • Application_PostRequestHandlerExecute: Fired when the ASP.NET page framework is finished executing an event handler.
    • Applcation_PreSendRequestHeaders: Fired before the ASP.NET page framework sends HTTP headers to a requesting client (browser).
    • Application_PreSendContent: Fired before the ASP.NET page framework sends content to a requesting client (browser).
    • Application_AcquireRequestState: Fired when the ASP.NET page framework gets the current state (Session state) related to the current request.
    • Application_ReleaseRequestState: Fired when the ASP.NET page framework completes execution of all event handlers. This results in all state modules to save their current state data.
    • Application_ResolveRequestCache: Fired when the ASP.NET page framework completes an authorization request. It allows caching modules to serve the request from the cache, thus bypassing handler execution.
    • Application_UpdateRequestCache: Fired when the ASP.NET page framework completes handler execution to allow caching modules to store responses to be used to handle subsequent requests.
    • Application_AuthenticateRequest: Fired when the security module has established the current user's identity as valid. At this point, the user's credentials have been validated.
    • Application_AuthorizeRequest: Fired when the security module has verified that a user can access resources.
    • Session_Start: Fired when a new user visits the application Web site.
    • Session_End: Fired when a user's session times out, ends, or they leave the application Web site.

    这份列表看起来有点吓人, 但是他们在不同的情况下可能会非常有用.

    使用这些事件的关键点是知道他们被触发的顺序. 比如说, Application_Init 和 Application_Start 事件会在应用程序刚刚开始第一次运行的时候触发. 同样, Application_Disposed 和 Application_End 仅会在应用程序终止的时候被触发. 另外, session-based的事件(Session_Start 和Session_End) 仅会在用户进入和离开站点的时候触发. 剩下的事件是处理应用程序请求的, 他们会被按照如下的顺序依次触发.

    • Application_BeginRequest
    • Application_AuthenticateRequest
    • Application_AuthorizeRequest
    • Application_ResolveRequestCache
    • Application_AcquireRequestState
    • Application_PreRequestHandlerExecute
    • Application_PreSendRequestHeaders
    • Application_PreSendRequestContent
    • <<code is executed>>
    • Application_PostRequestHandlerExecute
    • Application_ReleaseRequestState
    • Application_UpdateRequestCache
    • Application_EndRequest

    言归正传- 如何在global.asax中执行跳转

    =============

    假设你需要拒绝掉所有指向html的请求, 告诉你的客户, 你的网站不支持html(技术狂人的网站, 呵呵). 你可以在你的global.asax里这样写:

    <%@ Assembly Name="System.Web"%>
    
    <script runat="server">
    void Application_BeginRequest(object sender, EventArgs e)
    {
            if (Request.Url.ToString().EndsWith(".html"))
            {
                Response.Redirect("http://myserver:12345/pages/helloworld.aspx");
            }
    }
    </script>

    参考资料:

    Working with the ASP.NET Global.asax file

    http://articles.techrepublic.com.com/5100-10878_11-5771721.html 

    Redirecting in Global.asax

    http://forums.asp.net/t/1137257.aspx

  • 相关阅读:
    java实现万年历
    java中关于Calendar
    java中各种类型的输入输出
    java(向上向下转型)
    MyEclipse还原默认窗口
    Hibernate映射问题之OneToOne【自己整理】
    Neither BindingResult nor plain target object for bean
    剑宗与气宗
    分治算法
    spring处理线程并发
  • 原文地址:https://www.cnblogs.com/awpatp/p/1797146.html
Copyright © 2020-2023  润新知