我能得到什么?

看过《实战 HTTP 处理程序(HTTP Handler)》系列的全部文章后,您就可以
    - 轻松创建您自己的自定义 HTTP 处理程序
    - 让您的HTTP 处理程序与Web程序共享Session
    - 让动态生成的图片直接显示在Web页面上,而不需要临时文件的中转。
    - 将动态生成的PDF文件直接发送到Client端,而不需要临时文件的中转。

什么是 HTTP 处理程序?

您一定用过RDLC报表吧?如果您曾经在RDLC报表中的图表上右击,并选择“属性”的话,您就会发现RDLC报表的图表
    - 是一张(动态生成的)图片
    - 图片的地址有点怪,并不是“某某文件夹\某某图片文件”,而是类似于“Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=e1eab20aaba...”这样的类似于向某个页面发送的Request。如下图所示


    可是我们的网站上并没有名为 ReportViewerWebControl.axd 的页面呀。没错,ReportViewerWebControl.axd 并不是一个页面,它是一个 HTTP Handler--同页面一样可以接受访问请求并进行应答,但是比页面更“底层”,--意味着更灵活的HTTP处理程序。如果您想了解更为详细的关于HTTP Handler的知识,可以看黄忠成的这篇Inside ASP.NET 2.0-即时编译系统,非常的精彩。如果您跟笔者一样没耐心且不求甚解,就直接Follow me,用10分钟时间创建一个自定义的HTTP Handler。

创建一个最简单的 HTTP Handler

Step1:在VS2005中,创建一个Web应用程序。



Step2:创建一个类库,设定命名空间为“mylib.system.web”,这个命名空间可以根据您的需要设定为其它的值。
    具体方法是打开“解决方案资源管理器”,在“解绝方案 HTTPHandlerDemo”上右击,选择“添加->新建项目...”,然后选择“类库”。
    注意,如果您在第一步新建的是VB的Web程序,那么在“解决方案资源管理器”中可能不会显示“解绝方案 HTTPHandlerDemo”,这时您可以通过菜单“文件->添加...->新建项目...->类库”的方法来创建类库。




Step3:为新建的类库添加对“System.Web”的引用。



Step4:新建一个名为“MyHandler”的类。同样,这个类名是随便起的。



Step5: 修改MyHandle类,让它能够向客户端输出一些信息。
MyHandler.cs


Step6:为Step1中创建的Web应用程序“HTTPHandlerDemo”添加对类库“mylib.system.web”的引用



Step7:修改Step1中创建的Web应用程序的Web.config文件,在“system.web”节里面添加一行“httpHandlers”标记,如下面代码所示(涂上绿色背景的部分)。注意我写的“path="MyHandler.jxd"”。为什么扩展名是“jxd”呢?因为我姓景嘛,所以是“jxd”,如果你姓王,就可以叫“MyHandler.wxd”。

“Web.config”没有显示在“解决方案管理器”里?最简单的方法是按一下“F5”运行一下程序,在随后弹出的“是否修改Web.config”的对话框上按“确定”按钮。
Web.config


Step8:测试。按F5运行程序,在IE地址栏中手动将地址改成“/HttpHandlerDemo/MyHandler.jxd”,按下回车键,即可看到页面上显示的“Hello!”了。

    
Step9:修改Web应用程序的“Default.aspx”页面,添加一个IFrame标记,显示MyHandler.jxd中的内容。
Default.aspx

将Default.aspx设为起始页,按F5运行程序,就可以看到IFrame中的“Hello!”了。


Step10:发布程序,配置IIS。将Web应用程序发布,然后在IIS中建立虚拟目录后,浏览 Default.aspx 时会发现IFrame 里显示“找不到网页”的错误信息。这是因为IIS不知道使用哪个程序处理扩展名为“jxd”的访问请求。请按下面的步骤添加应用程序映射。
      首先打开IIS,在虚拟目录上右击,选择“属性”。

    然后点击“配置...”按钮。在“应用程序配置”页添加一个“.jxd”与可执行文件的映射。“可执行文件”栏可以模仿“.axd”的“可执行文件”栏来填写。



下载本篇全部源代码

本篇到此结束。下一篇将介绍向MyHandler.jxd 传递参数的方法。

 

本系列共6篇文章
    实战 HTTP 处理程序(HTTP Handler) (6)——条码随意打
    实战 HTTP 处理程序(HTTP Handler) (5)——不用临时文件,直接打开动态生成的文件
    实战 HTTP 处理程序(HTTP Handler) (4)——与Web程序共享Session
    实战 HTTP 处理程序(HTTP Handler) (3)——动态生成图片
    实战 HTTP 处理程序(HTTP Handler) (2)——向HTTP 处理程序传递参数
    实战 HTTP 处理程序(HTTP Handler) (1)——创建一个最简单的 HTTP Handler   <- you are here.

 

posted on 2007-09-01 14:11  1-2-3  阅读(7930)  评论(33编辑  收藏  举报