Global.asax文件說明


Global.asax是我們的底層文件,第一次的IIS請求都會先去執行它里面的文件,所以學會它里面的函數是非常有必要的。而且我們總是忽略這里的知識點,總覺得這是不必須的,其實我們錯了,這里才是程序的根本。

 

文件代碼:

 

/// <summary>
/// 所有的應用,狀態,程序被訪問,用戶退出,都可以找到。,
/// </summary>
public class Global : System.Web.HttpApplication
{
    /// <summary>
    /// 這里是IIS請求一開始執行,就執行一遍這個方法。后面還有個Application_End方法。
    /// </summary>
    /// 程序啟動的時候都會執行這個函數(一次),相當於Main函數,
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Application_Start(object sender, EventArgs e)
    {
        File.AppendAllText("c:/1.txt",DateTime.Now.ToString()+"Application_Start");
    }
    /// <summary>
    /// 這里的Session是服務器端為每一個瀏覽器保存數據開辟的臨時存儲空間,當瀏覽器關閉或者切換用戶就會重新開辟內存來保存Session
    /// 每一個瀏覽器的訪問網頁都會有一個有一個Session
    /// 一個瀏覽器的一個用戶公用了一個Session ,當用戶主動退出的時候
    /// </summary>
    /// 統計當前在線人數
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Session_Start(object sender,EventArgs e)
    {
        //這里相當於建立的臨時會話一樣。
        HttpContext.Current.Session.Abandon();//銷毀Session   ,15分鍾自動取消
    }
    /// <summary>
    /// 請求的時候做一些處理。(每一個應用都會觸發這里)        
    /// </summary>
    /// <param name="sender"></param>
    /// 查看當前請求的URL,通過這個(HttpContext.Current.Request.URL)在
    /// 快速監聽里面查看總共請求了哪些URL
    /// <param name="e"></param>
    protected void Application_BeginRequest(object sender,EventArgs e)
    {
        //實現功能,屏蔽IP
        if (HttpContext.Current.Request.UserHostAddress== "192.168.1.102")
        {
            HttpContext.Current.Response.Write("這里就可以把自己電腦的IP地址屏蔽掉了。");
        }
        else
        {
            HttpContext.Current.Response.Write("");
        }
        //防盜獵
    }
 
    protected  void Application_AuthentiateRequest(object sender,EventArgs e)
    {
 
    }
    /// <summary>
    /// 異常的處理模塊
    /// </summary>
    /// 調用這里的函數來曝出異常信息
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Application_Error(object sender,EventArgs e)
    {
 
    }
 
    /// <summary>
    /// 斷開會話,15超時的時候調用這個
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Session_End(object sender,EventArgs e)
    {
         
    }
    /// <summary>
    /// 程序被關閉的時候執行一次,IIS被關閉才執行。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Application_End(object sender,EventArgs e)
    {
 
    }
}

 

 函數的說明:

Global.asax這個文件是執行IIS請求必進過的文件,是非常重要。對於Web應用而言是聲明周期的一個事件響應的地方。 Global類,它繼承自System.Web.HttpApplication,它的作用是定義 ASP.NET 應用程序中的所有應用程序對象共有的方法、屬性和事件。 此類是用戶在 Global.asax 文件中所定義的應用程序的基類。*:Application_Start() 此函數是我們程序剛啟動的時候調用的函數,相當於我們C語言時候的Main函數一樣,都是程序一開始執行的函數,可以將一些需要初始化的函數,方法,寫在這里,比如路由,日志,IOC,DI,區域,文件等,關閉的時候有個對應的方法Application_End()函數

 

protected void Application_Start()
{
    EngineContext.Initialize(false);
 
    var dependencyResolver = new ControllerDependencyResolver();
    DependencyResolver.SetResolver(dependencyResolver);
    GlobalConfiguration.Configuration.DependencyResolver = dependencyResolver;
    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

 

 

protected void Application_End(object sender,EventArgs e)
{
 
}

 *:Application_Error() 異常處理函數,當應用程序中出現未捕獲的異常,此函數被調用,這里用HttpContext.Current.Server.GetLastError()來獲得異常信息,可以將其保存到log4Net記錄到日志中。

protected void Application_Error(object sender, EventArgs e)
{
    var exception = Server.GetLastError();
    LogException(exception);
 
}

 *:Session_Start() 服務端Session信息,這里是每一個瀏覽器去訪問服務器,服務器都會為其創建內存空間,即Session來保存它的一些信息,我們打開的一些網頁都在 一個Session中進行訪問。(好像是15分鍾自動掉線,相當於一次時間有限的會話。)一個瀏覽器的一個用戶公用一個Session,當用戶主動退出的 時候Session就會被關閉,調用下面的函數來關閉它,Session_End()。可以在它里面來統計當前在線人數等。

HttpContext.Current.Session.Abandon();//銷毀Session   ,15分鍾自動取消

 

protected void Session_Start(object sender,EventArgs e)
{
    //這里相當於建立的臨時會話一樣。
    HttpContext.Current.Session.Abandon();//銷毀Session   ,15分鍾自動取消
}

 

protected void Session_End(object sender,EventArgs e)
{
     
}

 *:Application_BeginRequest() 請求的時候都會訪問這個函數,每一個應用也會觸發這里,我們可以通過下面的函數來查看當前的請求URL, (HttpContext.Current.Request.URL)。可以在快速監聽里面進行查看。看一個網頁總共請求了幾次URL。在這里可以屏蔽 IP,防盜獵圖片等功能。

protected void Application_BeginRequest(object sender,EventArgs e)
{
    //實現功能,屏蔽IP
    if (HttpContext.Current.Request.UserHostAddress== "192.168.1.102")
    {
        HttpContext.Current.Response.Write("這里就可以把自己電腦的IP地址屏蔽掉了。");               
    }
    else
    {
        HttpContext.Current.Response.Write("");
    }
    //防盜獵
}

 *:這個函數我也不是很清楚,等以后學習的時候在補吧。

protected  void Application_AuthentiateRequest(object sender,EventArgs e)
{
 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM