实战 HTTP 处理程序(HTTP Handler) (1) -- 创建一个最简单的 HTTP Handler

  我能得到什么?

看过《实战 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 传递参数的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值