HTTP运行时的简单应用

来源:互联网 发布:平面设计求职意向美工 编辑:程序博客网 时间:2024/06/01 09:21

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

}