好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Http上下文请求

Http上下文请求

Http上下文请求

2012-09-09 23:08 by xiangxiong, 956 阅读,  1  评论,  收藏 ,  编辑

1.1 Response对象和Request对象

  Request对象是ASP.NET中HTTP通信对象过程中的重要对象。其中Request对象发出HTTP请求,Response对象响应HTTP请求,它们是组成ASP.NET中的HTTP通信过程,不可缺少的一部分。

  获取Response对象的信息并输出

  在ASP.NET中的HTTP通信过程中,HttpResponse对象响应Http请求。其中,为了编程方便,HttpResponse对象通过Response对象进行公开。实际上,Response对象是HttpResponse类的一个实例。 HttpResponse对象封装了ASP.NET中的Http请求中的响应信息,并提供对当前页的输出流操作方法。HttpResponse对象能够向网页输出信息,如文本,图片等,并且还为输出的信息提供缓冲区。

   HttpResponse对象不但可以在网页上输出信息,而且可以使用End()方法或中止网页的输出。其包含了许多常用的方法,如   Write(),WriteFile(),Flush(),End(),Close()等

用反射机制遍历HttpResposne对象的所有成员(包括方法和属性)的信息,如果成员是方法,则在方法的名称之后添加“()”代码如下:

 private   void   PrintResposneInfo() 
{ 
  //   获取Response实例 
  //   HttpResponse response = HttpApplication; 
 
Type t  =  Response.GetType();

  foreach  (MemberInfo mi  in   t.GetMembers()) 
{ 
  //   输出成员信息  
 if (mi.GetType().BaseType.Name ==  "  MethodInfo  "  ) 
{ 
Response.Write(  "  MemberInfo  " +mi.Name+ "  ():</br>  "  ); 
} 
  else   
{ 
Response.Write(  "  MemberInfo  " +mi.Name+ "  ()  "  ); 
}

Response.Write(  "   DeclaringType:  " + mi.DeclaringType.ToString());

Response.Write(  "   MemberType:  " + mi.MemberType.ToString());

Response.Write(  "   MetadataToken:  " + mi.MetadataToken.ToString());

Response.Write(  "   ReflectedType:  " + mi.ReflectedType.ToString()); 
} 
} 

1.2. Http请求上下文

   Http请求上下文(HttpContext对象)是ASP.NET中的重要对象,它包括了ASP.NET在HTTP请求中的大部分对象的信息,如Request,Response,Server,Modules 等对象。HttpContext对象 在ASP.NET应用程序的Http请求的过程各个步骤中保持各个对象之间的联系。HttpContext对象封装了ASP.NET中单个Http请求的所有可用的信息,并在请求处理机制时由HttpRunTime对象实例化。HttpContext对象在ASP.NET的Http请求的过程中与各个对象之间的关系:

图1-1 HttpContext对象在ASP.NET的Http请求中与各个对象之间关系

1.3 应用程序的Application实例

  在Asp.net 应用程序中,HttpApplication 实例是唯一的,表示Http请求过程中的整个应用,当应用程序开始运行时,HttpApplication 实例由Asp.Net基本运行库创建,开发过程中不需要显示创建HttpApplication类的实例。如果需要HttpApplication实例,直接获取即可。

 

 //   获取应用程序HttpApplication 实例 
 
HttpApplication thisHttpApp  = ApplicationInstance;

  ASP.NET应用程序运行之后,首先创建HttpRuntime对象,然后由HttpApplicationFactory对象创建或选择 HttpApplication对象,然后由HttpApplication处理ASP.NET应用程序请求资源。

  创建一个类(MyHttpModule),该类介绍了使用Http上下文对象(HttpConext)的方法。MyHttpModule类继承于接口IHttpModule(处理Http请求过程中的模块信息的一个接口),首先定义函数Init(HttpApplication httpApp) ,并在该函数中初始化应用程序的HttpApplication实例的AcquireRequestState事件和PostAcquireRequestState事件。其中AcquireRequestState事件和PostAcquireRequestState事件分别使用HttpContext对象和Resposne对象的Write()方法显示事件名称:

 class   MyHttpModule:IHttpModule 
{ 
  public   void   Dispose() 
{ 
  throw   new   NotImplementedException(); 
}

  public   void   Init(HttpApplication context) 
{ 
context.AcquireRequestState  +=  new   EventHandler(context_AcquireRequestState); 
context.PostAcquireRequestState  +=  new   EventHandler(context_PostAcquireRequestState); 
}

  void  context_PostAcquireRequestState( object   sender, EventArgs e) 
{ 
HttpApplication httpApp  =  (HttpApplication)sender; 
HttpContext context  =  HttpContext.Current; 
context.Response.Write(  "  context_PostAcquireRequestState  "  ); 
}

  void  context_AcquireRequestState( object   sender, EventArgs e) 
{ 
HttpApplication httpApp  =  (HttpApplication)sender; 
HttpContext context  =  HttpContext.Current; 
context.Response.Write(  "  context_AcquireRequestState  "  ); 
} 
} 

  新建一个页面,页面加载时首先获取应用程序HttpApplication实例,然后创建MyHttpModule的实例http并调用函数Init(HttpApplication httpApp)进行初始化,随后触发HttpApplication实例的AcquireRequestState和PostAcquireState事件,最后显示HttpApplication实例包含ASP.NET应用程序的重要对象的信息。

 protected   void  Page_Load( object   sender, EventArgs e) 
{ 
HttpApplication thisHttpApp  =  new   HttpApplication();

MyHttpModule http  =  new   MyHttpModule();

http.Init(thisHttpApp);

  //   调用 AcquireRequestState  
 http.context_AcquireRequestState(thisHttpApp,e);

  //   调用 PostAcquireRequestState  
 http.context_PostAcquireRequestState(thisHttpApp,e);

Response.Write(thisHttpApp.Application.ToString());

Response.Write(thisHttpApp.Context.ToString());

Response.Write(thisHttpApp.Modules.ToString());

Response.Write(thisHttpApp.Request.ToString());

Response.Write(thisHttpApp.Response.ToString());

Response.Write(thisHttpApp.Server.ToString());

Response.Write(thisHttpApp.Session.ToString()); 
}  

 

 

 

 

分类:  asp.net Ajax

标签:  ASP.NET对象

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Http上下文请求的详细内容...

  阅读:45次