所謂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();
}