天天看點

HTTP運作時的簡單應用

       所謂HTTP運作時,指的是從IIS接受到HTTP請求開始,一直到将響應結果回報給使用者為止的這段工作過程。

       假設一個網站正在維護建設中,通路任何一個頁面都提示“對不起,網站正在維護,暫停通路!”。該如何去做呢?

      HTTP運作時的結構圖就不畫了,HttpModule是HTTP請求經過的第一道“容器”,發生在HttpHandle之前。也就是說,Page類還沒有起作用,HttpModule就開始工作了。利用這個特點,常常将HttpModule作為HTTP請求的“過濾器”或“附加資訊器”,在到達Page類之前,先對HTTP請求做一些“預處理”。

      HttpModule 的使用方法如下:

     (1)、定義一個從IHttpModule接口繼承的類。

     (2)、在config檔案中寫好相關配置,以訓示.NET來調用這個類。

     其中,IHttpModule接口中有2個方法,如下:

      void Dispose();//做清理工作的

      void Init(HttpApplication context);//使用HttpModule的關鍵,提供了HttpApplication對象的執行個體

接下來就是實作上面的提示資訊:

(1)、在App_Code檔案夾下建立一個BreakModule.cs的類

       namespace MySpace.Module

       {

              public class BreakModule:IHttpModule

              {

                     public void Dispose()

                     {

                     }

                     public void Init(HttpApplication application)

                     {

                           application.BeginRequest += new EventHandler(application_BeginRequest);

                     }

                      public  void application_BeginRequest(object sender,EventArgs e)

                      {

                             HttpApplication application = (HttpApplication)sender;

                             application.CompleteRequest();

                             application.Context.Response.Write("對不起,網站正在維護中,暫停通路!");

                      }

              }

       }

(2)、在Web.config檔案中配置如下節:

       ....

       <system.web>

              <httpModules>

                       <add name="BreakModule" type="MySpace.Module.BreakModule"/>

              </httpModules>

       </system.web>

       ...

(3)、經過如上配置以後,浏覽器打開任何一個頁面都會提示這樣的資訊提示:對不起,網站正在維護中,暫停通路!

還有一種方法就是在Global.asax中的Application_BeginRequest(object sender,EventArgs e)方法中寫上如下代碼即可:

void Application_BeginRequest(object sender,EventArgs e)

{

     HttpApplication aplication = ()sender;

    application.Context.Response.Write("對不起,網站正在維護中,暫停通路!");  

    application.Context.Response.End();

}

繼續閱讀