IHttpHandler接口

摘要:
定义Asp.net实现的使用自定义Http处理程序同步HttpWeb请求的约定。“+context.Request.Browser.Type+”<br>“+context.Request.Browser.Version);在Web.config文件中包含以下行。<

IHttpHandler接口:定义Asp.net为了使用自定义Http处理程序同步处理Http Web请求而实现的协定。

说明:一旦定义的自己的HttpHandler,对系统的HttpHandler将是覆盖关系。

命名空间:System.Web

程序集:System.Web

语法:public interface IHttpHandler

IHttpHandler成员 :

IsReusable [ri'juzəb!]    获取一个值,该值指示其他请求是否可以使用IHttpHandler实例。

ProcessRequest    通过实现IHttpHandler接口的自定义HttpHandler启用Http Web请求的处理。

IHttpHandler.IsReusable属性

获取一个值,该值指示其他请求是否可以使用IHttpHandler实例。

语法:

bool IsResuable{get;}

IHttpHandler.ProcessRequest方法:

通过实现IHttpHandler接口的自定义HttpHandler启用Http Web请求的处理。

语法:

void ProcessRequest(HttpContext context)

参数:

Context,HttpContext对象,它提供对用于Http请求提供服务的内部服务器对象(如Request、Response、Session和Server)的引用。

 示例:

// Name this C# file HandlerTest.cs and compile it with the
// command line: csc /t:library /r:System.Web.dll HandlerTest.cs.
// Copy HandlerTest.dll to your \bin directory.

using System.Web;
namespace HandlerExample
{
   public class MyHttpHandler : IHttpHandler
   {
      // Override the ProcessRequest method.
      public void ProcessRequest(HttpContext context)
      {
         context.Response.Write("<H1>This is an HttpHandler Test.</H1>");      
         context.Response.Write("<p>Your Browser:</p>");
         context.Response.Write("Type: " + context.Request.Browser.Type + "<br>");
         context.Response.Write("Version: " + context.Request.Browser.Version);
      }

      // Override the IsReusable property.
      public bool IsReusable
      {
         get { return true; }
      }
   }
}

/*
To use this handler, include the following lines in a Web.config file.
<configuration>
   <system.web>
      <httpHandlers>
         <add verb="*" path="handler.aspx" type="HandlerExample.MyHttpHandler,HandlerTest"/>
      </httpHandlers>
   </system.web>
</configuration>
*/

 备注:在一个HttpHandler容器中如果需要访问Session,必须实现IRequiresSessionState接口,这只是一个标记接口,没有任何方法。

Http处理程序与Asp.net页面:

1.我们应当利用Http处理程序资源来实现应用程序特有的功能,它们需要比常规的Web页面被更快的处理。

2.自定义的处理程序不必对用户代码引发任何中间事件(如:Init Load) ,不必托管任何视图状态,而且也不支持任何回发机制。相对于.aspx资源来说,其中只发生呈现步骤。

3.Asp.net页面只是一个Http处理程序,是一个非常复杂而且高级的Http处理程序。底层的处理机制完全相同。

IHttpHandler如何处理Http请求

 当一个Http请求经HttpModule容器传递到HttpHandler容器时,Asp.net Framework会调用HttpHandler的ProcessRequest成员方法来对这个Http请求进行真正的处理。以一个Aspx页面为例,正是在这里一个aspx页面才被系统处理解析,并将处理完成的结果继续经由HttpModule传递下去,直至到达客户端。

对于ASPX页面,ASP.NET Framework在默认情况下是交给System.Web.UI.PageHandlerFactory这个HttpHandlerFactory来处理的。所谓一个HttpHandlerFactory,所谓一个HttpHandlerFactory,是指当一个HTTP请求到达这个HttpHandler Factory时,HttpHandlerFactory会提供出一个HttpHandler容器,交由这个HttpHandler容器来处理这个HTTP请求。 

参考:

http://msdn.microsoft.com/zh-cn/library/7ezc17x8%28v=VS.80%29.aspx 

免责声明:文章转载自《IHttpHandler接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql的行转列(case when) sqlserver.netVue-CLI为前端项目配置https证书下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c语言数据类型长度

 头文件<limits.h>和<float.h>中说明了基础数据的长度。float,double和long double的范围就是在IEEE 754标准中提及的典型数据。 关键字 位长(字节) 范围 格式化字符串 char 1 -128..127(或0..255,与体系结构相关) %c unsigned char 1 0...

如何实现Vue底部按钮点击加载更多

1. 一次请求 1.1 页面 使用slice来进行限制展现从0,a的数据: <div v-for="user in draw_user.slice(0,a)" :key="user.uid" class="user-item"> //判断a的值是否小于数组的长度,小于就显示点击加载更多 <div v-if="a<draw_use...

3.6.1最大熵阈值分割寻找阈值实现图像二值化

1 #include <opencv2/imgproc/imgproc.hpp> 2 #include <opencv2/core/core.hpp> 3 #include <opencv2/highgui/highgui.hpp> 4 #include <iostream> 5 6 usin...

jQuery+Superfish制作下拉菜单

(从死了一次又一次终于挂掉的百度空间中抢救出来的,发表日期 2014-06-27) 最早接触Superfish还是整Drupal时的下拉菜单,那时只知道Superfish是Drupal的一个Module,用来制作类似下图的菜单: 直到今天才知道Superfish是Joel Birch写的一个用来制作下拉菜单的jQuery插件。发现用Superfish来制作...

清除页面广告?身为前端,自己做一款简易的chrome扩展吧

大家肯定有这样的经历,浏览网页的时候,左右两端广告,诸如“屠龙宝刀,点击就送”,以及最近火的不行的林子聪37传奇霸业什么“霸业面具,霸业吊坠”的魔性广告总是充斥我们的眼球。 当然有现成的扩展程序或者插件(两者概念稍有不同)可以清除页面广告,但是既然身为一名程序猿,尤其是FEDer,为什么不尝试一下自己写一个清除广告的扩展程序呢。其实,编写一个浏览器扩展程序...

springboot整合dubbo的简单案例

使用框架:   jdk 1.8   springboot-2.1.3    dubbo-2.6   spring-data-jpa-2.1.5 一、开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类; 1、创建springboot工程 spring-boot-demo-dubbo-interface 坐标...